Flink组件

Flink 组件

Master :

  1. AppMaster(AM), AM包含以下三个组件:

    1. Dispatcher: Dispatcher负责接收用户提供的作业,并且负责为这个新提交的作业拉起一个新的 JobManager 组件.
    2. JobManage: 每个job都有一个属于自己的JM.
    3. ResourceMange: 一个集群只有一个RM,负责资源的管理.

SlotManager(属于ResourceManage的子组件): 它维护了当前集群中所有 TaskExecutor上的 Slot 的信息与状态, 如该 Slot 在哪个 TaskExecutor 中,该 Slot 当前是否空闲等。

Slave:

  1. TaskManage(TM): 包含以下组件

    1. TaskExecutor: 实际任务的执行者,它可能有多个槽位,每个槽位执行一个具体的子任务
    2. Slot: 目前 Flink 中 TaskExecutor 的资源是通过 Slot 来描述的,一个 Slot 一般可以执行一个具体的 Task,但在一些情况下也可以执行多个相关联的 Task。

Client:

        当用户提交一个Flink程序时,会首先创建一个Client,该Client首先会对用户提交的Flink程序进行预处理,并提交到Flink集群中处理,所以Client需要从用户提交的Flink程序配置中获取JobManager的地址,并建立到JobManager的连接,将Flink Job提交给JobManager。Client会将用户提交的Flink程序组装一个JobGraph, 并且是以JobGraph的形式提交的。一个JobGraph是一个Flink Dataflow,它由多个JobVertex组成的DAG。其中,一个JobGraph包含 了一个Flink程序的如下信息:JobID、Job名称、配置信息、一组JobVertex等。

TaskExecutor 是实际任务的执行者,它可能有多个槽位,每个槽位执行一个具体的子任务。每个 TaskExecutor 会将自己的槽位注册到 SlotManager 上,并汇报自己的状态,是忙碌状态,还是处于一个闲置的状态

SlotManager 既是 Slot 的管理者,也负责给正在运行的任务提供符合需求的槽位。还记录了当前积压的槽位申请。当槽位不够的时候向Flink的ResourceManager申请容器。

Pending slots 积压的 Slot 申请及计数器

Flink 的 ResourceManager 则负责了与 Yarn 的 ResourceManager 进行交互,进行一系列例如申请容器,启动容器,处理容器的退出等等操作。因为采用的是异步申请的方式,所以还需要记录当前积压的容器申请,防止接收过多容器。

Pending container request 积压容器的计数器

AMRMClient 是异步申请的执行者,CallbackHandler 则在接收到容器和容器退出的时候通知 Flink 的 ResourceManager。

Yarn 的 ResourceManager 则像是一个资源的分发器,负责接收容器请求,并为 Client 准备好容器。

发布了1 篇原创文章 · 获赞 1 · 访问量 247
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览