目录
一 运行架构
(一) JobManager
Flink运行时最少需要一个JobManager和至少1个TaskManager.
其中,JobManager控制一个应用程序执行的主进程.
首先,JobManager接收要执行的应用程序(作业图/类/库/JAR包等),将作业图转为物理层面的数据流图(执行图),执行图包括了所有的并发可执行任务,之后JobManager会向资源管理器(ResourceManager)请求执行任务必要的资源,也就是任务管理器(TaskManager)上的插槽(slot)。一旦它获取到了足够的资源,就会将执行图分发到真正运行它们的TaskManager上。
同时,在运行过程中,JobManager会负责所有需要中央协调的操作,比如说检查点(checkpoints)的协调。
也就是说,JobManager主要作用:
1 接收客户端任务
2 划分具体执行任务
3 申请资源
(二) ResourceManager
负责资源的管理,在整个 Flink 集群中只有一个 ResourceManager. 注意这个ResourceManager不是Yarn中的ResourceManager, 是Flink中内置的, 只是赶巧重名了而已.
主要负责管理任务管理器(TaskManager)的插槽(slot)
当JobManager申请插槽资源时,ResourceManager会将有空闲插槽的TaskManager分配给JobManager。如果ResourceManager没有足够的插槽来满足JobManager的请求,它还可以向资源提供平台发起会话,以提供启动TaskManager进程的容器。另外,ResourceManager还负责终止空闲的TaskManager,释放计算资源。
(三)Dispatcher
负责接收用户提供的作业,并且负责为这个新提交的作业启动一个新的JobM