数据流作业需要很长时间才能启动

时间:2015-05-10 11:12:03

标签: google-cloud-dataflow

我正在运行一份读取约70GB(压缩数据)的工作。 为了加快处理速度,我尝试用大量实例(500)开始工作,但等待20分钟后,它似乎没有开始处理数据(我有一个数字的计数器)记录阅读)。拥有大量实例的原因是,作为其中一个步骤,我需要生成类似于内连接的输出,这会为后续步骤产生更大的中间数据集。

在提交作业和开始执行作业之前,平均延迟应该是多少?它取决于机器的数量吗?

虽然我可能有一个导致该行为的错误,但我仍然想知道这个数字/逻辑是什么。

谢谢, ģ

2 个答案:

答案 0 :(得分:2)

在GCE上启动VM所需的时间随着您启动的VM数量的增加而增加,并且通常VM启动/关闭性能可能具有较高的差异。 20分钟肯定会远高于正常水平,但它在我们观察到的类似尺寸的分布尾部的某处。这是一个众所周知的痛点:(

要验证此次VM启动是否确实存在故障,您可以查看Cloud Logs以获取您的作业ID,并查看是否有任何日志记录:如果有,则一些VM肯定已启动。此外,您可以通过向主程序添加参数来启用更细粒度的日志记录:

--workerLogLevelOverrides=com.google.cloud.dataflow#DEBUG

这将使工作人员记录详细信息,例如接收和处理工作项。

与此同时,我建议启用自动调节,而不是手动指定大量实例 - 它应该在作业生命周期的适当时刻逐步扩展到适当数量的虚拟机。

答案 1 :(得分:0)

另一种可能的(可能更有可能)解释是您正在读取需要在处理之前解压缩的压缩文件。在压缩文件中寻找是不可能的(因为gzip不直接支持它),所以即使指定了大量实例,也只使用一个实例来从文件中读取。

解决此问题的最佳解决方法是将单个压缩文件拆分为多个单独压缩的文件。

调试此问题的最佳方法是尝试使用较小的压缩输入并查看日志。