动态工作重新平衡将工作最佳地分配给工作人员,其中融合将折叠执行图,因此该图将更小,这意味着更少的工作人员参与。动态工作重新平衡如何帮助融合,以便即使融合的存在,工作的分配也是最优的?例如,如果融合的worker因为map步骤中发生的扇出而苦苦挣扎。从逻辑上讲,应该涉及更多的工人,但图是融合的。在这种情况下,动态工作重新平衡还能发挥作用吗?
发布于 2019-01-26 04:34:06
即使融合了图形,动态重新平衡也应该起作用。动态重新平衡意味着master要求工人拆分他们的工作,并将这些工作分配给空闲的工人。
Fusion在逻辑上是对流水线图的优化,而动态重新平衡是在运行时的优化。您可以认为fusion正在尝试减少计算步骤,而动态重新平衡则试图加速每个步骤的执行,无论该步骤是否足够或是否可以与其他步骤合并。
发布于 2019-01-17 06:56:48
当你有一个融合的FanOut步骤时,建议在FanOut之后中断融合。您可以通过向您的管道添加强制云数据流服务实现您的中间PCollection的操作来防止这种融合。例如,您可以在第一个ParDo之后插入GroupByKey并取消分组。云数据流服务从不跨聚合融合ParDo操作。
您可以在以下链接中找到此主题的更多详细信息:
https://cloud.google.com/dataflow/docs/guides/deploying-a-pipeline#dynamic-work-rebalancing
编辑:
我相信数据流文档中关于融合和工作重新平衡的限制部分中的信息可能会对此有所帮助。融合作业中的大量步骤后,作业中的中间PCollections会更少,并且动态工作重新平衡将限制为源实体化PCollection中的元素数量。希望这能有所帮助
https://stackoverflow.com/questions/54202329
复制相似问题