Flink02-Flink运行架构第一节-运行时的组件和基本原理

由于本章节内容比较多,防止学习枯燥,分成了4节来写(点击标题可跳转, 持续更新ing)
1-运行时的组件和基本原理
2-Slot和并行度
3-数据流和执行图
4-任务调度控制

1-Flink运行时的组件

运行时组件

1)作业管理器(JobManager)

JobManager

2)任务管理器(TaskManager)

任务管理器

3)资源管理器(ResourceManager)

资源管理器

4)分发器(Dispatcher)

在这里插入图片描述

2-任务提交流程

任务提交流程
上图是从一个较为高层级的视角,来看应用中各组件的交互协作。如果部署的集群环境不同(例如 YARN,Mesos,Kubernetes,standalone 等),其中一些步骤可以被省略,或是有些组件会运行在同一个 JVM 进程中。

具体地,如果我们将 Flink 集群部署到YARN 上,那么就会有如下的提交流程:
任务提交流程yarn

  1. Flink 任务提交后,Client 向 HDFS 上传 Flink 的 Jar 包和配置
  2. 向 Yarn ResourceManager 提交任务
  3. ResourceManager 分配 Container 资源并通知对应的NodeManager 启动 ApplicationMaster,ApplicationMaster 启动后加载 Flink 的 Jar 包和配置构建环境,然后启动 JobManager
  4. ApplicationMaster 向 ResourceManager申请资源启动 TaskManager , ResourceManager 分配 Container 资 源 后
  5. ApplicationMaster 通 知 资 源 所 在 节 点 的 NodeManager 启动 TaskManager , NodeManager 加载 Flink 的 Jar 包和配置构建环境并启动 TaskManager,TaskManager启动后向 JobManager 发送心跳包,并等待 JobManager 向其分配任务。

3-任务调度原理

任务调度原理

客户端不是运行时和程序执行的一部分,但它用于准备并发送dataflow(JobGraph)给 Master(JobManager),然后,客户端断开连接或者维持连接以等待接收计算结果。

当 Flink 集 群 启 动 后 , 首 先 会 启 动 一 个 JobManger 和一个或多个的 TaskManager。由 Client 提交任务给 JobManager,JobManager 再调度任务到各个 TaskManager 去执行,然后 TaskManager 将心跳和统计信息汇报给 JobManager。 TaskManager 之间以流的形式进行数据的传输。上述三者均为独立的 JVM 进程。

Client 为提交 Job 的客户端,可以是运行在任何机器上(与 JobManager 环境连通即可)。提交 Job 后,Client 可以结束进程(Streaming 的任务),也可以不结束并等待结果返回。

JobManager 主要负责调度 Job 并协调 Task 做 checkpoint ,职责上很像 Storm 的 Nimbus。从 Client 处接收到 Job 和 JAR 包等资源后,会生成优化后的执行计划,并以 Task 的单元调度到各个 TaskManager 去执行。

TaskManager 在启动的时候就设置好了槽位数(Slot),每个 slot 能启动一个 Task,Task 为线程。从 JobManager 处接收需要部署的 Task,部署启动后,与自己的上游建立 Netty 连接,接收数据并处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值