研磨Flink之运行时组件

一、作业管理器(JobManager)

1、控制一个应用程序执行的主进程,每个应用程序都会被一个不同的JobManager所控制。

2、JobManager会先接收到应用程序,应用程序包括:作业图(JobGraph)、逻辑数据流图和打包的所有类库和其他资源的Jar包。

3、JobManager会把JobGraph转换成一个物理层面的数据流图,这个图被叫做“执行图”(ExecutionGraph),包含了所有可以并发执行的任务。

4、JobManager会向资源管理器(ResourceManager)请求执行任务必要的资源,也就是任务管理器上的slot。一旦获取到足够的资源,就会将执行图分发到真正运行的TaskManager上。

二、任务管理器(TaskManager)

Flink中的工作进程。

1、每一个TaskManager都包含了一定数量的插槽(slots)。插槽的数量限制了TaskManager能够执行的任务数量。

2、启动后,TaskManager回向资源管理器注册它的插槽,收到资源管理器的指令后,TaskManager就会将一个或者多个插槽提供给JobManager调用。JobManager就可以向插槽分配任务(tasks)来执行了。

3、在执行过程中,一个TaskManager可以跟其他运行同一个应用程序的TaskManager交换数据。

三、资源管理器(ResourceManager)

1、负责管理任务管理器(TaskManager)的插槽(slot),TaskManager插槽是Flink中定义的处理资源单元。

2、Flink为不同的环境和资源管理工具提供了不同的资源管理器,比如yarn,mesos,k8s

3、当jobManager申请插槽资源时,resourceManager会将有空闲的插槽的TaskManager分配给JobManager。如果ResourceManager没有足够的插槽来满足jobManager的请求,它还可以向资源提供平台发起会话,提供启动TaskManager进程的容器。

四、分发器(Dispatcher)

1、可以跨作业运行,它为应用提交提供了rest接口。

2、当一个应用被提交执行时,分发器就会启动并将应用移交给一个jobManager。

3、Dispatcher也会启动一个web UI,用来方便展示和监控作业的执行信息。

4、Dispatcher在架构中可能并不是必须的,这取决于应用提交运行的方式。

发布了59 篇原创文章 · 获赞 2 · 访问量 2069

猜你喜欢

转载自blog.csdn.net/zuodaoyong/article/details/102877688