前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >复杂Flink任务Task均衡调度和优化措施

复杂Flink任务Task均衡调度和优化措施

作者头像
王知无-import_bigdata
发布2023-08-08 11:21:02
5330
发布2023-08-08 11:21:02
举报
文章被收录于专栏:大数据成神之路

300万字!全网最全大数据学习面试社区等你来!

一、背景:

flink任务部署使用基于k8s的standalone集群,先在容器上部署flink集群再提交flink任务,其中flink任务的提交与taskmanager的创建、注册是同时进行的。

二、问题

如果集群有35个taskmanager,140个slot,其中一个Vertex的并行度<140,属于该vertex的task在taskmanager上分布不均,导致节点负载不均衡。

如下所示:

  • 该flink拓扑拥有5个vertex,其中两个vertex并行度为140,其他三个并行度根据kafka分区数设置为:10、30、35。任务最大并行度为140,任务资源配置为:35个【4core 8gb】的taskManager节点
  • 通过web ui可发现,即使配置了cluster.evenly-spread-out-slots:true,另外三个vertex的task依然会被调度到同个taskmanager上

三、优化方式

1. 问题分析

上诉问题可以简化为:

假设一个任务拓扑逻辑为:Vertex A(p=2)->Vertex B(p=4)->Vertex C(p=2)。基于slot共享和本地数据传输优先的划分策略,划分为四个ExecutionSlotSharingGroup:{A1,B1,C1}、{A2,B2,C2}、{B3}、{B4},

如果资源配置将每个Taskmanager划分为2个Slot,就可能出现以下分配:

当前Slot划分是平均划分内存,对cpu没有做限制。上诉分配会导致节点负载不均衡,若A、C Task计算资源耗费较多,TaskManager1将会成为计算的瓶颈,理想情况下我们希望分配方式是:

2. 优化

修改策略

1. 为ExecutionSlotSharingGroup申请slot时先对其按包含Task个数排序,优先调度Task个数多的分组

2. 延缓任务调度,等注册TaskManager个数足够大ExecutionSlotSharingGroup平均分配再为其申请Slot

效果

优化后task调度情况:同个vertex的多个task均匀调度到不同的taskmanager节点上

四、性能对比

1. CPU负载对比

  • 优化前: 节点间CPU负载较为分散,部分节点长时间处于100%高负载状态
  • 优化后: 节点间CPU负载较为集中,节点不会长时间处于100%负载状态

再补充个CPU使用率对比

从拓扑图可知任务存在200/480两种不同并行度的task,通过均衡task sharegroup,实现各tm节点的cpu负载均衡,以便我们后续压缩tm的资源配额。

2. 数据积压情况

优化后数据积压量比之前少一半,同资源情况下处理能力更佳,数据延迟更低。

  • 优化前:
  • 优化后:

六、思考

1. Task均衡

对于拓扑:Vertex A(p=3)->Vertex B(p=4)->Vertex C(p=1)。

将会按以下分配:

Vertex B->Vertex C存在四条数据传输通道(B1->C1)、(B2->C1)、(B3->C1)、(B4->C1),对于非forward的连接,无论subtask分配到哪个group中,至少都存在三条通道需要跨节点通讯。

那么如果在分组的时候就先对task做一次均衡:{A1,B1}、{A3,B3}、{A2,B2}、{B4,C1},后面无论怎么调度都会均衡。但当task num% slot num != 0的时候,仍存在task在单tm聚集的情况。

2. 延迟调度的改进

在flink生成执行计划时期根据拓扑逻辑生成延迟的策略,减少用户操作感知。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据技术与架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景:
  • 二、问题
  • 三、优化方式
  • 四、性能对比
  • 六、思考
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的四七层流量分发服务,访问流量经由 CLB 可以自动分配到多台后端服务器上,扩展系统的服务能力并消除单点故障。轻松应对大流量访问场景。 网关负载均衡(Gateway Load Balancer,GWLB)是运行在网络层的负载均衡。通过 GWLB 可以帮助客户部署、扩展和管理第三方虚拟设备,操作简单,安全性强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档