核心组件
我们先来简单了解一下 flink 作业提交涉及到的组件
同时,如果不了解 Yarn 的同学欢迎跳转到这篇文章,了解一下健鑫集团的工程承包流程(doge):
JobManager
JobManager 是整个flink作业的管理者 包含 Dispatcher、ResourceManager 以及 JobMaster
Dispatcher
主要用来接收 client 提交的 flink 作业,为 flink 作业启动一个 JobMaster
JobMaster
负责一个 flink 作业
作业提交阶段,将逻辑执行计划转换为物理执行计划
部署阶段,向ResourceManager 请求执行 flink 作业执行所需要的资源,将任务分发到不同的节点上去运行
运行阶段,对任务的运行进行持续的监控和协调;比如:进行checkpoint、故障恢复、异常容错等
TaskManager
flink 实际处理作业的组件
client
主要帮助用户将 flink 作业提交到对应环境上去运行
Flink 作业提交部署流程
首先,简单来就是:
用户提交作业 -> 生成逻辑执行计划 -> 物理执行计划 -> 启动 master 节点,申请对应资源(包工头去跟 boss 申请资源) -> master 节点将任务分发到 worker 节点上去执行(包工头雇佣农民工,给农民工分配任务、发工资)
-
用户提交 flink 作业到client
-
client 将 flink 作业中的数据处理逻辑转换成 JobGraph,JobGraph 可以简单理解为逻辑执行计划。然后 client 将作业提交到Dispatcher 中
-
Dispatcher 对程序进行分发,启动一个JobMaster 解析 JobGraph
-
JobMaster 将 JobGraph 解析成 ExecutionGraph,ExecutionGraph 可以简单理解成物理执行计划,解析完成之后,JobMaster 就会知道作业运行需要多少资源
-
JobMaster 向 ResourceManager 申请运行 flink 作业所需要的 TaskManager,ResourceManaager 向资源管理系统(比如 Yarn)申请对应的资源;ResourceManager 申请到资源之后,在对应的资源节点上启动 TaskManager
-
TaskManager 启动之后向 ResourceManager 注册并提供Task Solt(Task Solt 是 flink 资源分配的最小单位)
-
JobMaster 将 flink 作业分发到 TaskManager 的 Task Solt 上去运行
END
本文介绍了 flink 作业的提交流程,希望可以帮助到你