资料内容:
1. JobMaster
JobMaster 是 JobManager 中最核心的组件,负责处理单独的作业(Job)。所以
JobMaster和具体的 Job 是一一对应的,多个 Job 可以同时运行在一个 Flink 集群中, 每个
Job 都有一个自己的 JobMaster。需要注意在早期版本的 Flink 中,没有 JobMaster 的概念;
而 JobManager 的概念范围较小,实际指的就是现在所说的 JobMaster。
在作业提交时,JobMaster 会先接收到要执行的应用。这里所说“应用”一般是客户端
提交来的,包括:Jar 包,数据流图(dataflow graph),和作业图(JobGraph)。
JobMaster 会把 JobGraph 转换成一个物理层面的数据流图,这个图被叫作“执行图”
(ExecutionGraph ), 它包含了所有可以并发执行的任务。 JobMaster 会向资源管理器
(ResourceManager)发出请求,申请执行任务必要的资源。一旦它获取到了足够的资源,就
会将执行图分发到真正运行它们的 TaskManager 上。
而在运行过程中,JobMaster 会负责所有需要中央协调的操作,比如说检查点(checkpoints)
的协调。
2. 资源管理器(ResourceManager)
ResourceManager 主要负责资源的分配和管理,在 Flink 集群中只有一个。所谓“资
源”,主要是指TaskManager 的任务槽(task slots)。任务槽就是 Flink 集群中的资源调配单
元,包含了机器用来执行计算的一组 CPU 和内存资源。每一个任务(Task)都需要分配到一个
slot 上执行。
这里注意要把 Flink 内置的 ResourceManager 和其他资源管理平台(比如 YARN)的
ResourceManager 区分开。
Flink 的 ResourceManager,针对不同的环境和资源管理平台(比如 Standalone 部署,
或者YARN),有不同的具体实现。在 Standalone 部署时,因为 TaskManager 是单独启动
的(没有 Per-Job 模式),所以 ResourceManager 只能分发可用TaskManager 的任务槽,
不能单独启动新 TaskManager。