1.JobManager
JobManager控制单个应用的执行,每个应用都会有一个JobGraph(逻辑DataFlow),一个胖Jar,JobManager把JobGraph转换成名为ExecutionGraph(物理DataFlow),JobManager从ResourceManager申请资源slot,申请到资源后,就会将ExecutionGraph中的任务分发给TaskManager执行,JobManager还要负责所有需要集中协调的操作,比如创建检查点
2.ResourceManager
ResourceManager负责管理flink的处理资源单元slot,将slot提供给JobManager还负责终止空闲的TaskManager以释放计算资源
3.TaskManager
TaskManager是flink的工作进程,通常有多个,每个TaskManager提供一定数量的slot,slot限制了一个TaskManager可执行的任务数,TaskManager启动后,会向ResourceManager注册他的slot,收到resourceManager的指示时,TaskManager会向JobManager提供一个或多个slot,之后JobManager向slot分配任务
4.Dispatcher
Dispatcher跨多个作业运行,它提供一个REST接口来让我妈提交需要执行的应用,一旦某个应用提交,Dispatcher启动一个Jobmanager并将应用交给他,Dispatcher还会启动一个web UI,用来提供有关作业执行的信息