大数据学习之Flink,Flink的安装部署

Flink部署

一、了解它的关键组件

  • 客户端(Client)

  • 作业管理器(JobManager)

  • 任务管理器(TaskManager)

我们的代码,实际上是由客户端获取并做转换,之后提交给 JobManger 的。所以 JobManager 就是 Flink 集群里的"领导者",对作业进行中央调度管理; 而它获取到要执行的作业后,会进一步处理转换,然后分发任务给众多的 TaskManager。这里 的 TaskManager,就是真正"干活的人" ,数据的处理操作都是它们来做的,如图所示。

二、配置环境

  • 部署在Linux上,使用 CentOS 7

  • 安装hadoop集群

  • 三台节点之间配置免密,关闭防火墙

1. 本地启动

1.1 下载Flink的安装包 和所对应的 scala版本存放在/opt/software

1.2 解压在bigdata1下的/opt/module目录下

复制代码
tar -zxvf /opt/software/flink-1.13.0-bin-scala_2.12.tgz -C /opt/module/

1.3 启动

进入/opt/module/flink目录下

复制代码
bin/start-cluster.sh

使用jps命令查看它的进程

复制代码
jps

1.4 访问web页面

在浏览器中输入 bigdata1:8081 进入web页面

1.5 关闭集群

复制代码
bin/stop-cluster.sh 

2.集群启动

集群启动就有了主从节点的区别,Flink也是典型的 Master-Slave 架构 的分布式数据处理框架

  • Master 对应着 JobManager

  • Slave 对用着 TaskManager

三台节点服务器角色分配为

节点服务器 bigdata1 bigdata2 bigdata3
角色 JobManager TaskManager TaskManager

具体步骤如下:

2.1下载并安装

与上述操作一样,不展示了

2.2修改集群配置
  1. 进入conf 目录下,修改flink-conf.yaml 文件中的 jobmanager.rpc.address的参数为bigdata1

    指定JobManager节点

    复制代码
    # JobManager 节点地址.
    jobmanager.rpc.address: bigdata1
  2. 修改workers文件

    指定TaskManager节点

    复制代码
    bigdata2
    bigdata3
  3. 优化 JobManager 和 TaskManager 配置

    • jobmanager.memory.process.size:

      对 JobManager 进程可使用到的全部内存进行配置, 包括 JVM 元空间和其他开销,默认为 1600M,可以根据集群规模进行适当调整。

    • taskmanager.memory.process.size:

      对 TaskManager 进程可使用到的全部内存进行配置, 包括 JVM 元空间和其他开销,默认为 1600M,可以根据集群规模进行适当调整。

    • taskmanager.numberOfTaskSlots:

      对每个 TaskManager 能够分配的 slots 数量进行配置, 默认为 1,可根据 TaskManager 所在的机器能够提供给 Flink 的 CPU 数量决定。所谓 slots 就是 TaskManager 中具体运行一个任务所分配的计算资源。

    • parallelism.default:

      Flink 任务执行的默认并行度配置,优先级低于代码中进行的并行 度配置和任务提交时使用参数进行的并行度数量配置

2.3 分发安装目录

将目录分发给其他两个节点

2.4启动集群
复制代码
 bin/start-cluster.sh

用jps命令查看

2.5访问web页面

3.部署模式

  • 会话模式(Session Mode)

  • 单作业模式(Per-Job Mode)

  • 应用模式(Application Mode)

3.1 概念
3.1.1会话模式

会话模式其实最符合常规思维。我们需要先启动一个集群,保持一个会话,在这个会话中通过客户端提交作业,如图所示。集群启动时所有资源就都已经确定,所以所有提交的作业会竞争集群中的资源。

会话模式比较适合于单个规模小、执行时间短的大量作业

3.1.2 单作业模式

会话模式因为资源共享会导致很多问题,所以为了更好地隔离资源,我们可以考虑为每个 提交的作业启动一个集群,这就是所谓的单作业(Per-Job)模式,如图所示。

需要注意的是,Flink 本身无法直接这样运行,所以单作业模式一般需要借助一些资源管 理平台来启动集群,比如 YARN、Kubernetes。

3.1.3 应用模式

前面提到的两种模式下,应用代码都是在客户端上执行,然后由客户端提交给 JobManager 的。但是这种方式客户端需要占用大量网络带宽,去下载依赖和把二进制数据发送给 JobManager;加上很多情况下我们提交作业用的是同一个客户端,就会加重客户端所在节点的 资源消耗。

所以解决办法就是,我们不要客户端了,直接把应用提交到 JobManger 上运行。而这也就 代表着,我们需要为每一个提交的应用单独启动一个 JobManager,也就是创建一个集群。这 个 JobManager 只为执行这一个应用而存在,执行结束之后 JobManager 也就关闭了,这就是所 谓的应用模式,如图所示。

应用模式与单作业模式,都是提交作业之后才创建集群;单作业模式是通过客户端来提交 的,客户端解析出的每一个作业对应一个集群;而应用模式下,是直接由 JobManager 执行应 用程序的,并且即使应用包含了多个作业,也只创建一个集群。

3.2 部署

具体的查看我的另一篇CSDN的文章 大数据学习之Flink,了解Flink的多种部署模式上,点击查看

3.2.1独立模式(Standalone)
3.2.2 YARN 模式
3.2.3 K8S 模式
相关推荐
得物技术3 天前
从埋点需求到规则资产:Hermes Agent 重构得物数仓工作流
大数据·llm·ai编程
久美子3 天前
AI驱动数仓建设的Harness工程实践——本体建模、知识分层与上下文工程
大数据
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
通信小呆呆4 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
大志哥1234 天前
ES和Logstash日志链路系统上线后遭遇切片爆炸(解决)
大数据·elasticsearch
H__Rick4 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee4 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
Alsn864 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
果丁智能4 天前
物联网智能锁赋能集中式住宿:身份核验与远程权限管控的全链路技术实践
大数据·人工智能·物联网·智能家居
YM52e4 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统