动态工作平衡将最佳地分配工作给工人,在这里融合会使执行图崩溃,从而使图变小,意味着涉及的工人更少。动态工作再平衡如何帮助融合,从而即使存在融合,工作分配也可以最佳地进行?例如,如果融合工人由于地图步骤中发生的扇出而苦苦挣扎。从逻辑上讲,应该涉及更多的工人,但是图形融合了。在这种情况下,动态工作再平衡还能发挥作用吗?
答案 0 :(得分:1)
当您执行了融合的FanOut步骤时,建议在FanOut之后中断融合。您可以通过在管道中添加强制Cloud Dataflow服务实现中间PCollection的操作来防止这种融合。例如,您可以在第一个ParDo之后插入GroupByKey并取消分组。 Cloud Dataflow服务永远不会融合跨聚合的ParDo操作。
您可以在以下链接中找到有关此主题的更多详细信息:
https://cloud.google.com/dataflow/docs/guides/deploying-a-pipeline#dynamic-work-rebalancing
编辑:
我相信数据流文档中关于融合和工作平衡的“限制”部分中的信息可能会有所帮助。 “ ...如果融合了您工作中的大量步骤,则您的工作中的中间PCollection将会减少,并且动态工作平衡将限于源实现的PCollection中的元素数量。”希望有帮助
答案 1 :(得分:1)
即使图形已融合,动态平衡也应能正常工作。动态再平衡意味着主人要求工人分工,然后将这些工作分配给闲置的工人。
Fusion是逻辑上对管道图的优化,而动态重新平衡是运行时的优化。您可以认为融合是在尝试减少计算步骤,而动态平衡则在试图加快每个步骤的执行,无论该步骤是否足够或可以与其他步骤合并。