博客 Flink Job 执行流程

Flink Job 执行流程

   数栈君   发表于 2024-01-29 11:36  83  0

Apache Flink 是一款开源的流处理和批处理框架,它具有强大的实时计算能力。Flink Job 的执行流程可以概括为以下几个主要步骤:

1. 作业提交
- 开发者编写的 Flink 应用程序通常包含一个或多个流处理或批处理作业。
- 作业通过 `bin/flink run` 命令或者编程 API 提交给 Flink 集群。
- 当使用诸如 YARN、Kubernetes 或者 standalone 模式时,客户端会负责将作业的相关信息打包成 jar 文件或其他形式的工件,然后提交给资源管理器(如 YARN ResourceManager 或 Kubernetes API Server)。

2. 作业初始化
- 客户端与资源管理器交互,请求启动一个新的 ApplicationMaster(在 YARN 模式下)或 JobManager(在 standalone 模式下)实例。
- 资源管理器为 JobManager 分配资源(即Container),启动 JobManager 进程。

3. JobGraph 构建
- 客户端将用户编写的逻辑计划转换为 Flink 的内部表示——JobGraph,这个过程中涉及到了对流和算子的优化。
- JobGraph 包含了作业的拓扑结构(各个算子节点及其间的依赖关系)、并行度设置和其他配置信息。

4. 任务分配与调度
- JobManager 接收到 JobGraph 后,进一步将其划分为一系列可以独立执行的任务(Task),形成 ExecutionGraph。
- JobManager 依据 Task 的依赖关系和资源需求,向资源管理器申请容器资源。
- 得到资源后,JobManager 会在容器内启动 TaskManager 进程。

5. TaskManager 启动
- TaskManager 是实际执行计算任务的工作节点,它管理着多个线程和内存槽(Slots)。
- TaskManager 加入到 JobManager 的管理之下,并报告可用的资源。

6. 任务部署与执行
- JobManager 根据 ExecutionGraph 将任务分发给各个 TaskManager,TaskManager 在各自的 Slots 中启动 Task 实例。
- 数据通过网络在不同 Task 间流动,每个 Task 执行其对应的算子逻辑。

7. 检查点与容错
- 如果配置了检查点机制,JobManager 会协调各个 TaskManager 定期进行全局一致性快照,以便在出现故障时能够快速恢复作业状态。
- 若某个 Task 或 TaskManager 出现故障,JobManager 能够基于最近的检查点重调度任务,保证作业的高可用性。

8. 作业结束
- 当作业执行完毕(达到终止条件或被手动取消)时,JobManager 通知所有相关的 TaskManager 结束任务并释放资源。
- JobManager 向客户端报告作业的最终状态。

综上所述,Flink 作业的执行流程体现了其分布式、容错性和高效性的特点,从作业提交、编译优化、任务划分、资源调度直至最终执行和完成,每个阶段都紧密协作,确保数据处理任务的顺利进行。



《行业指标体系白皮书》下载地址:https://www.dtstack.com/resources/1057/?src=bbs

《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001/?src=bbs

《数栈V6.0产品白皮书》下载地址:https://www.dtstack.com/resources/1004/?src=bbs

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack

0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群