概述
Flink是主从架构模式,Flink集群中有主节点和从节点,另外在集群之外还有客户端节点,在这些节点
之中又有许多内部的角色,这些角色联合运作,完成整个Flink程序的计算任务。本篇文章中将主要对
Flink的这些点节点和角色进行介绍,从而了解Flink集群内部的运行机制。
Flink集群架构和程序流程
Flink节点和角色介绍
Client主要职责是提交任务, 提交后可以结束进程, 或者保持连接等待结果返回
Client不是Flink集群运行时的一部分
Actor system
Actor system是具有各种角色的actor的容器(container),它提供诸如调度,配置,日志记
录等服务。
它还包含一个线程池。
所有的actor驻留在一个层次结构中。 每个新创建的actor都将被分配给父母。
actor之间使用信息系统互相交谈。 每个actor都有自己的邮箱,从中读取所有邮件。 如
果actor是本地的,则消息通过共享内存共享,但是如果actor是远程的,则认为RPC调
用消息。
JobManager
主要职责是分布式执行,并协调任务做检查点(checkpoint),协调故障恢复等
JobManager 从客户端接收到任务以后, 首先生成优化过的执行计划, 再调度到 TaskManager
中执行
Scheduler
调度器:Flink中的执行者被定义为任务槽。 每个任务管理器都需要管理一个或多个任务槽。
在内部,Flink决定哪些任务需要共享该插槽以及哪些任务必须被放置在特定的插槽中。 它通
过SlotSharingGroup和CoLocationGroup完成。
Checkpoint Coordinator
Checkpoint协调器,负责checkpoint管理执行
Memory Manager
内存管理器: 会根据配置等信息计算内存的分配
TaskManager
主要职责是从 JobManager 处接收任务, 并部署和启动任务, 接收上游的数据并处理
TaskManager 在创建之初就设置好了 Slot , 每个 Slot 可以执行一个任务
每个TaskManager是一个进程
Task Slot
任务槽,负责具体任务的执行
每一个slot是一个线程
|
Flink的程序基本流程步骤
1. 程序代码提交前,Client中的Graph Builder对程序流程进行优化,将优化后的程序流程图提交给Client的Actor System。
2. Client的Actor System将程序和流程图提交给Flink集群中的主节点JobManager的Actor
System。
3. JobManager的Actor System将程序分发给各个TashManager节点的Actor System。
4. TashManager节点的Actor System启动内部的Task Slot进行任务的执行。
5. 任务执行期间,JobManager开启Checkpoint Coordinator容器,协调检查点的制作,实现容错
机制。
6. TashManager执行任务结束,将执行结果逐级返回。
|
小结
Flink程序任务是由每个节点和角色协调完成的,了解每个节点和角色的作用是学习Flink的运行机制的
入门的基础,可以从宏观上对Flink的运行机制有基本全面的认知。在进行Flink集群搭建的时候,配置
文件中的许多配置和集群中的这些角色都是有对应关系的。了解Flink集群架构角色和程序流程是Flink
入门的重要一课。
|
|