gpt4 book ai didi

apache-flink - 有没有办法确定总作业并行度或运行 Flink 作业所需的插槽数量(在运行之前)

转载 作者:行者123 更新时间:2023-12-01 19:35:35 24 4
gpt4 key购买 nike

有没有一种方法可以确定从执行计划或其他方式运行作业所需的任务槽总数,而不必先实际启 Action 业。

根据此文档:https://ci.apache.org/projects/flink/flink-docs-stable/concepts/runtime.html

"A Flink cluster needs exactly as many task slots as the highest parallelism used in the job. No need to calculate how many tasks (with varying parallelism) a program contains in total."

如果我从 StreamExecutionEnvironment 获取执行计划(设置后但没有实际执行作业)并从执行计划 json 中的节点列表中获取任何节点的最大并行度,这是否足以确定任务数量运行作业所需的插槽。

是否存在这种情况不再出现的情况?或者有什么注意事项需要记住吗?

最佳答案

在一般情况下,可以通过以下方式计算给定 Flink 作业所需的槽数:对于每个 slot sharing group g(表示一组可以部署到同一个槽的算子),需要找到并行度最大的算子p_max_g。现在需要将作业中每个槽共享组的这些数字相加 slots = sum_(g in G) p_max_g 以获得所需槽的数量。

大多数情况下(如果用户没有设置任何槽位共享组),则应该只存在一个槽位共享组G = {g}。这意味着 Flink 可以将每个算子的一个子任务部署到同一个槽中。

一种特殊情况是批处理作业(有界流),如果它们使用阻塞数据交换。在这种情况下,可以依次运行不同的时隙共享组(假定它们与阻塞数据交换/操作符边缘对齐)。

不幸的是,ExecutionEnvironment.getExecutionPlan不会打印操作符的槽共享组。因此,只有在存在单个槽共享组的情况下,基于字符串化执行计划计算所需槽数才有效。

关于apache-flink - 有没有办法确定总作业并行度或运行 Flink 作业所需的插槽数量(在运行之前),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57797137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com