Flink 核心组件原理 多图剖析
程序源代码
共 2758字,需浏览 6分钟
·
2020-12-22 22:59
一、Flink 整体架构
接受 application,包含 StreamGraph(DAG),JobGraph(优化过的)和 JAR,将 JobGraph 转换为 Execution Graph 申请资源,调度任务,执行任务,保存作业的元数据,如Checkpoint 协调各个 Task 的 Checkpoint。
二、JobManager 内部组成原理
负责 Checkpoint 的协调,通过定时做快照的方式记录任务状态信息; Job Dispatch 负责接收客户端发送过来的 JobGraph 对象(DAG),并且在内部生成 ExecutionGraph(物理执行图); 将作业拆分成 Task,部署到不同的 TaskManager 上去执行;ctorSystem 是 基于 akka 实现的一个通信模块,负责节点之间的通信,如 Client 和 JobManager 之间,JobManager 和 TaskManager 之间的通信; 负责资源管理,对于不同的部署模式,有相应的 ResourceManager 的实现; TaskManager 启动时,会向 JobManager 注册自己,并时刻和 JobManager 保持心跳。
三、TaskManager 内部原理
TaskManager 是作为一个虚拟机进程存在,TaskManager 启动的时候,会向 JobManager 注册自己; JobManager 提交作业的时候,TaskManager 会启动 Task 线程将 Job 运行起来,TaskManager 里面有线程池负责线程的调度执行。 在 Flink 内部也会有类似 Spark 或者 MapReduce 节点 shuffle 的过程,比如进行了一个 GroupByKey 的操作,就会涉及到数据的交互;Network Manager 是基于 Netty 实现的一个数据传输模块; 而节点和节点之间的通信是基于 akka 实现的 Actor System,来进行远程的 rpc 通信; Memory Management 是内存管理模块,当数据进来时,负责申请内存来运行任务。
TaskManager 如何负责数据传输
四、Client 内部原理
五、JobGraph
--end--
扫描下方二维码 添加好友,备注【交流】 可私聊交流,也可进资源丰富学习群
评论