Flink JobManger、TaskManger、TaskSlots、Client作用


image-20210517214803937

上图,是我们Flink-WEB-UI 一部分截图

Flink 系统主要由两个组件组成,分别为 JobManagerTaskManager,Flink 架构遵循了 Master - Slave 架构设计原则,JobManager 为 Master 节点,TaskManagerWorker (Slave)节点。

image-20210517222836376

Flink 在运行时,从分工上来说,又有着三种角色:JobManager、TaskManager、Client。


JobManger

JobManager :负责整个 Flink 集群任务的调度以及资源的管理从客户端中接收作业

>>>>>>>>

详细解释:客户端通过将编写好的 Flink 应用编译打包,提交到 JobManager,JobManger根据集群TaskManager 上 TaskSlot 的使用情况,为提交的应用分配相应的 TaskSlot 资源并命令 TaskManager 启动与执行从客户端中获取的作业;JobManger还负责协调Checkpoint 操作,每个 TaskManager 节点 收到 Checkpoint 触发指令后,完成 Checkpoint 操作,所有的 Checkpoint 协调过程都是在 Fink JobManager 中完成。


TaskManager

TaskManager: 负责具体的任务执行和任务资源申请和管理

>>>>>>>>

详细解释:TaskManger从 JobManager 接收需要执行的任务,然后申请Slot 资源(根据集群Slot使用情况以及并行度设置)并尝试启动Task,开始执行作业,TaskManager中最小的资源调度单位是TaskSlots。TaskManger数量由集群中Slave数量决定


TaskSlots

TaskSlots:Task共享系统资源(内存);TaskManger并发执行能力决定性因素。

**>>>>>>>> **

详细解释:TaskSlots:TaskManager 是一个 JVM 进程,是实际负责执行计算的Worker,会以独立的线程来执行一个task或多个subtask。为了控制一个 TaskManager 能执行多少个 task,Flink 提出了 Task Slot 的概念

image-20210517223924217

(1)Task之间通过 TaskSlot 方式共享系统资源(内存),TaskSlots也决定TaskManger并发执行能力。

(2)每个TaskSlot代表TaskManager资源不同分割。例如,具有三个插槽的TaskManager会将其内存的1/3平均分配到每个TaskSlot。分配资源意味着子任务不会与其他作业的子任务竞争内存,而是具有一定数量的保留托管内存。需要注意的是,此处没有对CPU进行隔离。当前TaskSlot仅将任务的内存进行隔离,简言之,即每个TaskSlot持有部分TaskManger内存,同一个作业下的task/subtask可共享TaskSlot

image-20210517223643877

TaskSlot仅在属性为可用状态(Available)时才可被分配。

TaskSlot默认为1,可在Flink-conf.yml配置文件中进行更改

image-20210520133740374

注意点:一个具体的TaskSlot仅可服务于一个Job

例如,我现在集群中只有一个TaskSlot,但是我启动了两个Job,第二个Job启动时,则会进行SCHEDULED 状态,等待集群为该job申请Slot资源

image-20210520134039992

第二个Job进入SCHEDULED状态,等待资源申请

image-20210520134337264

image-20210520134449991

此状态会一直持续五分钟,五分钟后仍未申请到Slot资源,则此JOb会失败

image-20210520134738145

image-20210520134813985

TaskSlot默认为1,可在Flink-conf.yml配置文件中进行更改

image-20210517225346439

image-20210517225414579

TaskSlot一般设置为服务器核心数或者核心数/2 的数量,如有多个服务器,尽可能保证所有服务器TaskSlot数量一致

Flink集群运行时TaskSlot数量= 每个Flink集群节点服务器设置TaskSlot之和,如果节点TaskSlot一致,则为TaskManger num * TaskSlot num


Client

Client:Flink程序提交的客户端

>>>>>>>>>>

Client是Flink程序提交的客户端,当用户提交一个Flink程序时,会首先创建一个Client,该Client首先会对用户提交的Flink程序进行预处理,并提交到Flink集群中处理。正因为其需要提交到Flink集群,所以Client需要从用户提交的Flink程序配置中获取JobManager的地址,并建立到JobManager的连接,将Flink Job提交给JobManager。

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值