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

大数据68

细粒度资源管理的背景

目的

Flink 目前采用粗粒度的资源管理方法,其中task被部署到预定义的、通常相同的slot中,而不需要每个包含多少资源的概念。使用slot共享,可以将同一slot共享组 (SSG)中的task部署到一个slot中,而不管每个task/operator需要多少资源。在FLIP-56中,我们提出了细粒度资源管理,它根据工作负载的资源需求,利用具有不同资源的slot来执行task。

对于许多job来说,使用粗粒度的资源管理并将所有task简单地放在一个 SSG 中就足够了,无论是在资源利用率还是可用性方面。

  • 对于所有task都具有相同并行度的许多流式job,每个slot将包含一个完整的pipeline。理想情况下,所有pipeline应该使用大致相同的资源,这可以通过调整相同slot的资源轻松满足。
  • task的资源消耗随时间而变化。当一个task的消耗减少时,额外的资源可以被另一个消耗增加的task使用。这被称为削峰填谷效应,减少了所需的整体资源。

但是,在某些情况下,粗粒度的资源管理不能很好地工作。

  • task可能有不同的并行度。有时,无法避免这种不同的并行性。例如,source/sink/lookup task的并行性可能会受到外部上游/下游系统的分区和 IO 负载的限制。在这种情况下,具有较少task的slot将比具有整个task pipeline的slot需要更少的资源。
  • 有时,整个pipeline所需的资源可能太多,无法放入单个slot/task管理器中。在这种情况下,pipeline需要拆分为多个 SSG,它们可能并不总是具有相同的资源需求。
  • 对于批处理job,并非所有task都可以同时执行。因此,pipeline的瞬时资源需求随时间而变化。

尝试使用相同的slot执行所有task可能会导致非最佳资源利用率。相同slot位的资源必须能够满足最高资源要求,这对于其他要求将是浪费的。当涉及到 GPU 等昂贵的外部资源时,这种浪费会变得更加难以承受。
因此,需要细粒度的资源管理,利用不同资源的slot来提高这种场景下的资源利用率。

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长

相关文章
大数据

Nacos 是如何同时实现AP与CP的

两种一致性策略如何在nacos中共存 或许会有疑问,为什么早先的 cp模式的 Zookeeper或者 AP模式的 Eureka,都只有支持 CAP理论下大家常用的 AP实现或者 CP实现,而nacos...
大数据

eureka服务端启动流程

现在开始看eureka服务端是怎么启动的。首先从主类上标记的注解@EnableEurekaServer开始分析,其实没啥,就是@Import导入了EurekaServerMarkerConfigura...
大数据

6.4向量空间模型,余弦相似度计算

提示: 信息检索:文档评分-词项权重计算-向量空间模型 第四部分:向量空间模型 文章目录 向量空间模型 * 关联矩阵 文档表示成向量 Queries表示成向量 向量相似度计算 - 欧式距离? 利用夹角...
大数据

alpakka-kafka(2)-consumer

alpakka-kafka-consumer的功能描述很简单:向kafka订阅某些topic然后把读到的消息传给akka-streams做业务处理。在kafka-consumer的实现细节上,为了达到...
大数据

docker修改端口映射

docker修改端口 一、修改端口步骤 1、查询hash docker inspect 容器 # 查询容器信息,获取容器的hash值 2、关闭容器 docker stop 容器 3、关闭docker ...