Flink运行架构中 TaskManager 与Slots

介绍

每一个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个都会处于空闲状态,所以要学会合理设置并行度!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值