Flink学习5:工作原理

PS: 这里常说的 Job = 一个应用

Task = 一个任务

总的来讲:

1.Flink应用程序会首先提交给JobClient,做解析和算子链化

2.然后会提交给JobManager,进行资源分配,将任务分给TaskManager

3.TaskManager会启动相应的Slot线程,进行任务处理,在处理过程中会持续向JobManager,返回任务状态(任务开始,进行中,已完成等)

4.任务执行完以后,执行结果会被返回给客户端Client

 

1.基本原理

主要采用主从节点架构,即master 和work 节点
分为两部分:JobManage(master节点)r和 TaskManager(work节点)

 1.1 jobClient 节点

JobClient主要是负责接收应用程序,并解析和优化执行计划,然后提交执行计划到JobManager.

这里的优化执行主要是将相临的算子进行融合,形成算子链,减少任务数量,提高JobManager中Task的资源利用率。

1.2 JobManager

JobManager负责Flink整个集群的调度以及资源的管理。

1.分配资源

从JobClient 接收任务,然后根据TaskManager中task slot的使用情况,为提交的应用分配相应的slot资源,并命令TaskManager启动从Client中获取的应用。

2.高可用机制

另外为了保障高可用,一般会有多个JobManager 同时存在,多个JobManager节点也是采取主从模式,选举出一个主节点工作,其他几个从节点会闲置。当主节点挂掉后,会从剩余的从节点中选举出新的节点,作为主节点。

3.容错

检查点机制

 

1.3 TaskManager

负责具体的任务执行,和对应任务,在每个节点上的资源申请与管理。

TaskManager从JobManager接收并部署任务,然后使用slot资源来启动task,建立数据库网络的链接,接收数据并开始做数据处理。

 TaskManager之间的数据交互都是通过数据流的方式进行的。

 

1.4 Slot

Slot是TaskManager的资源粒度划分

每个TaskManager 像一个容器,包含一个多个slot,每个slot都有自己独立的内存,所有slot平均分配整个TaskManager 的内存。

另外,slot只划分内存,不涉及cpu的划分,CPU是共享使用的。

一个slot会运行多个任务,每个任务以单独的线程执行。

 

采用slot设计的优势:

 

1.5 task

是在算子的子任务进行链化之后形成的。

一个作业中的task数量,和作业中算子的并行度和链化的策略有关。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值