Flink架构

JobManager

控制一个应用程序执行的主进程,每个应用程序将由不同的JobManager控制执行。JobManager会先接收到要执行的应用程序,包括作业图(JobGraph),逻辑数据流图(Logical Dataflow Graph)和打包的所有类库Jar包。
JobManager将JobGraph转换成物理层面的数据流图执行图(ExecutionGraph),包含所有可并发执行的任务。
JobManager向ResourceManager请求执行任务必要的资源,即TaskManager上的插槽(slot)。获取到了足够的资源后,就将执行图分发到真正运行他们的TaskManager上。
在运行过程中,JobManager会负责所有需要中央协调的操作。

ResourceManager

负责管理TaskManager上的slot。slot是flink定义的处理资源单元。
当JobManager申请资源时,ResourceManager将有空闲slot的TaskManager分配给JobManager。如果ResourceManager没有足够的slot,可向资源提供平台发起会话,以提供启动TaskManager进程的容器。ResourceManager还负责终止空闲的TaskManager,释放计算资源。

TaskManager

每个TaskManager都有一定数量的slot。slot的数量限制了 TaskManager 能够执行的任务数量。
TaskManager会向ResourceManager注册slot,收到ResourceManager的指令后,TaskManager就将slot提供给JobManager调用,JobManager就可以向slot分配task来执行了。在执行过程中,一个TaskManager可以跟其它运行同一应用程序的TaskManager交换数据。

Dispatcher

可以跨作业运行,它为应用提交提供了rest接口。当一个应用被提交执行时,Dispatcher就会启动并将应用移交给一个JobManager。

你可能感兴趣的:(Flink架构)