Flink, 大数据

flink-06 Standalone 会话模式为例

  • 各组件间使用Actor通信系统进行沟通
  • 一个job对应一个jobMaster

作业管理器(JobManager)

JobManager是一个Flink集群中任务管理和调度的核心,是控制应用执行的主进程。也就是说,每个应用都应该被唯一的JobManager所控制执行。

JobManager包含3各不同的组件

JobMaster

JobMaster是JobManager中最核心的组件,负责处理单独的作业Job。所以JobMaster和具体的job是一一对应的,多个job可以同时运行在一个Fllink集群中,每个Job都有一个自己的JobMaster。

在作业提交时,JobMaster会先接收到要执行的应用。JobMaster会把JobGraph转换成一个物理层面的数据流图,这个图被叫做“执行图”ExecutionGraph,它包含了所有可以并发执行的任务。JobMaster会向资源管理器(ResourceManager)发出请求,申请执行任务必要的资源。一旦它获取到了足够的资源,就会将执行图分发到真正运行他们的TaskManager上。

而在运行过程中,JobMaster会负责所有需要中央协调的操作,比如说检查点(checkpoints)的协调。

资源管理器(ResourceManager)

ReourceManager主要负责资源的分配和管理,在Flink集群中只有一个。

所谓资源,主要是指TaskManager的任务槽(task slots) 任务槽就是Flink集群中的资源调配单元,包含了机器用来执行计算的一组CPU和内存资源。每一个任务Task都需要分配到一个slot上执行

这里注意要把flink内置的ResourceManager和其他资源平台 YARN的RM区分开

分发器(Dispatcher)

Dispather主要负责提供一个REST接口,用来提交应用,并且负责为每一个新提交的作业启动一个新的JobMaster组件。Dispatcher也会启动一个WebUI,用来方便的展示和监控作业执行的信息。Dispatcher在架构中并不是必须的,在不同的部署模式下可能会被忽略掉。

任务管理器(TaskManager)

TaskManager是Flink中的工作进程,数据流的具体计算是它来做的。Flink集群中必须至少一个TaskManager,每一个TaskManager都包含了一定数量的任务槽(task slots),Slot是资源调度的最小单位,slot的数量限制了TaskManager能够并行处理任务数量。

启动之后,TaskManager会想资源管理器注册它的slots,收到资源管理器的指令后,TaskManager就会将一个或多个槽位提供给JobManager调用,JobMaster就可以分配任务来执行了。

在执行任务过程中,TaskManager可以缓冲数据,还可以跟其他运行同一应用的TaskManager交换数据