Flink任务调度原理之TaskManager 与Slots

本文介绍了Flink中TaskManager和TaskSlot的角色及其关系。TaskManager是JVM进程,通过taskslots控制可接收的任务数量。每个slot代表一部分资源,用于任务隔离。默认情况下,子任务可以共享slot,允许在同一JVM内共享资源,提高效率。并行度设置会影响实际使用的TaskSlot数量,合理配置对性能至关重要。
摘要由CSDN通过智能技术生成

一、作用与关系

每一个worker(taskmanager)为了控制能接受多少个Task,worker会通过task slot来进行控制,一个worker至少有一个task slot,那么怎么处理呢?

总结:

1、Flink中每一个TaskManager都是一个JVM进程,它可能会在独立的线程上执行一个或多个subtask;

2、为了控制一个TaskManager能接收多少个task,TaskManager会通过task slot来进行控制,一个TaskManager至少有一个slot。

3、每个task solt表示TaskManager拥有资源的一个固定大小的子集,假如一个taskmanager有三个slot,那么它会将其管理的内存分为三个slot,slot仅仅用来隔离task的受管理内存。

4、可以通过调整TaskSlot的数量去自定义subtask之间的隔离方式。如果一个TaskManager一个slot时,那么每个task grop运行在独立的JVM中。而当一个TaskManager多个slot时,多个subtask会共享一个JVM,而在同一个JVM进程中的task将共享TCP连接和心跳消息,也可能共享数据集和数据结构,从而减少每个task负载,

 二、共享机制

默认情况下,Flink 允许子任务共享 slot,即使它们是不同任务的子任务(前提是它们来自同一个job)。 这样的结果是,一个 slot 可以保存作业的整个管道。
Task Slot 是静态的概念,是指 TaskManager 具有的并发执行能力,可以通过参数taskmanager.numberOfTaskSlots进行配置;而并行度parallelism是动态概念,即TaskManager运行程序时实际使用的并发能力,可以通过参数parallelism.default进行配置。
举例:如果总共有3个TaskManager,每一个TaskManager中分配了3个TaskSlot,也就是每个TaskManager可以接收3个task,这样我们总共可以接收9个TaskSot。但是如果我们设置parallelism.default=1,那么当程序运行时9个TaskSlot将只有1个运行,8个都会处于空闲状态,所以要学会合理设置并行度!
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值