首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在任务管理器之间均匀分配Flink运算符

在任务管理器之间均匀分配Flink运算符
EN

Stack Overflow用户
提问于 2018-08-10 04:34:56
回答 2查看 547关注 0票数 2

我在一个由15台机器组成的裸机集群上制作了一个Flink流应用程序的原型。我使用的是yarn-mode,有90个任务槽(15x6)。

该应用程序从单个Kafka主题读取数据。Kafka主题有15个分区,因此我也将源运算符的并行度设置为15。然而,我发现Flink在某些情况下会将2-4个使用者任务实例分配给同一个任务管理器。这会导致某些节点变得网络受限( Kafka主题服务于大量数据,而机器只有1G网卡)和整个数据流中的瓶颈。

有没有办法“强制”或以其他方式指示Flink在所有任务管理器之间均匀分配任务,比如循环?如果没有,有没有办法手动将任务分配给特定的任务管理器插槽?

EN

回答 2

Stack Overflow用户

发布于 2018-08-10 20:35:11

据我所知,这是不可能的。作业管理器将任务调度到任务槽中,它只知道任务槽。它不知道一些任务槽属于一个任务管理器,而另一些属于另一个任务管理器。

票数 0
EN

Stack Overflow用户

发布于 2020-06-11 21:02:25

Flink不允许手动分配任务槽,因为在处理故障的情况下,它可以将任务分配给剩余的任务管理器。

但是,您可以通过在flink-conf.yaml中设置cluster.evenly-spread-out-slots: true来均匀分配工作负载。这适用于Flink >= 1.9.2。

要使其正常工作,您可能还需要设置:

taskmanager.numberOfTaskSlots等于每台计算机的可用CPU数,以及

parallelism.default等于群集中的CPU总数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51775380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档