美文网首页
Flink资源管理单元TaskSlot的理解

Flink资源管理单元TaskSlot的理解

作者: 伯仲之元 | 来源:发表于2020-04-27 22:45 被阅读0次

TaskSlot的理解

TaskSlot是Flink中最小的资源管理单元,它仅均分TaskManager上的内存,但不隔离CPU。例如图中,每个TaskManager上面有3个TaskSlot,那么意味着每个TaskSlot有三分之一TaskManage内存。

Flink的Job逻辑会被分为一个一个的Task,在资源分配上,Flink保证Task的每个并行度一定有个TaskSlot使用。例如图中,source/map组成的Task的并行度为2,它就分别占用两个TaskManager上各一个TaskSlot。

同一个TaskManager上面的多个TaskSlot它们共享一个TCP连接、心跳、以及一些数据集和数据结构。避免每个TaskSlot都维护这些东西,导致资源浪费。

image-20200426221319803.png

由于TaskSlot并不隔离CPU,因此一般情况上可以配置TaskSlot的个数等于CPU核数+1,充分利用线程。

TaskSlot的共享

TaskSlot是可以共享的,前提是同一个Job的多个Task,那么其中几个Task是可以共享使用同一个TaskSlot的。例如图中,source/map,keyBy/windows/appy,sink这三个Task共享使用了一个TaskSlot。

image-20200426223126275.png

这种共享方式主要有两个优点:

  1. 提高资源利用率。以source/map,keyBy/windows/appy,sink这三个Task共享一个TaskSlot为例。如果没有TaskSlot共享,那么source/map就会独立占用一个TaskSlot,而source/map操作并不是一个资源密集型逻辑,就会造成一个TaskSlot资源空闲。相反keyBy/windows/apply却是一个资源密集逻辑,需要比较多的资源(内存和CPU),但此时缺要分配额外的一个TaskSlot去跑,而不是去使用空闲的资源,这时就造成了资源浪费。

  2. 无需关心一个Job有几个Task从而去计算需要几个TaskSlot。如果没有TaskSlot共享,那么为了最大程度上提高Flink Job的运行性能,就必须要去计算我需要配置几个TaskSlot(因为一个Task独占一个TaskSlot),此时用户就需要去计算我需要配置几个TaskSlot。而在有了TaskSlot共享的基础上,Flink会保证TaskSlot的数量一定是等于Job的最大并发数,每个TaskSlot至少一个Task使用。此时,用户要考虑的仅仅是如何设置TaskSlot数量,保证CPU被充分利用,以及内存被适度均分。

为了保证TaskSlot个数等于最大并行度,Flink会进行一个计算Parallism/TaskSlot取上整,判定需要起几个TaskManager,比如下面2种配置方法:

  • TaskSlot < Parallism。那么TaskManager的个数一定大于1个,例如2个TaskSlot,6个Parallism,就会有3个TaskManager。此时需要注意集群整体内存情况,每个TaskManager都会有一样大的内存。虽然通过taskmanager.memory.process.size配置的内存不大,但是由于TaskManager的数量变多了,整个Flink集群就会申请很多内存了,所以要避免因申请内存过大而被资源管理器拒绝申请。
  • TaskSlot>=Paramllism。这个时候必然只有1个,因为一个TaskManager的TaskSlot个数足以保证最大并行度。

相关文章

  • Flink资源管理单元TaskSlot的理解

    TaskSlot的理解 TaskSlot是Flink中最小的资源管理单元,它仅均分TaskManager上的内存,...

  • Flink JobManager高可用性(HA)

    概述 JobManager 协调每个 Flink 部署。它负责调度和资源管理。 默认情况下,每个 Flink 集群...

  • JobManager High Availability (HA

    原文链接 JobManager协调每个Flink部署。它负责调度和资源管理。 默认情况下,每个Flink集群都只有...

  • 深入解析 Flink 细粒度资源管理

    细粒度资源管理的背景 目的 Flink 目前采用粗粒度的资源管理方法,其中task被部署到预定义的、通常相同的sl...

  • Flink部署

    Flink作为一个分布式流式计算引擎,需要计算资源才可以执行应用程序。Flink能够与目前所有通用的资源管理框架集...

  • Unity 资源管理器(一)

    unity 资源管理器 AssetBundle 对于资源管理的理解 什么是资源管理?我的理解是按照一个既定的规则去...

  • flink 理解

    统一的批处理与流处理系统 在大数据处理领域,批处理任务与流处理任务一般被认为是两种不同的任务,一个大数据项目一般会...

  • Flink 1.10 细粒度资源管理解析

    相信不少读者在开发 Flink 应用时或多或少会遇到在内存调优方面的问题,比如在我们生产环境中遇到最多的 Task...

  • Flink(4)运行时架构

    Flink 运行时的组建 作业管理器: JobManager 任务管理器: TaskManager 资源管理器:R...

  • Python中的进程、线程和协程

    前言: 进程和线程对操作系统来说,线程是最小的执行单元,进程是最小的资源管理单元。 协程(Coroutines)是...

网友评论

      本文标题:Flink资源管理单元TaskSlot的理解

      本文链接:https://www.haomeiwen.com/subject/gtmpwhtx.html