【问题标题】:Workflow failed. Causes: (35af2d4d3e5569e4): The Dataflow appears to be stuck工作流失败。原因:(35af2d4d3e5569e4):数据流似乎卡住了
【发布时间】:2017-10-04 15:20:11
【问题描述】:

我正在使用 Google 数据流服务为 ETL 运行一些 apache-beam 脚本。

这些作业最初需要 4-5 分钟才能完成,但现在它们在一个小时后失败并出现以下错误。

工作流程失败。原因: (35af2d4d3e5569e4):数据流似乎卡住了。

看来工作实际上并没有开始。

我是使用 python SDK 2.1.0 执行它作为 this 问题的答案提到切换 SDK,我尝试使用 python SDK 2.0.0 执行它,但没有运气。

职位编号为:2017-09-28_04_28_31-11363700448712622518

更新:

在@BenChambers 建议检查日志后,由于工人启动失败,作业似乎没有启动

日志显示以下日志 4 次(如数据流文档中所述,捆绑包在声明失败之前尝试了 4 次)

Running setup.py install for dataflow-worker: finished with status 'done' 
Successfully installed dataflow-worker-2.1.0 
Executing: /usr/local/bin/pip install /var/opt/google/dataflow/workflow.tar.gz 
Processing /var/opt/google/dataflow/workflow.tar.gz 
 Complete output from command python setup.py egg_info: 
 Traceback (most recent call last): 
   File "<string>", line 1, in <module>
 IOError: [Errno 2] No such file or directory: '/tmp/pip-YAAeGg-build/setup.py' 

 ---------------------------------------- 
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-YAAeGg-build/ 
/usr/local/bin/pip failed with exit status 1 
Dataflow base path override: https://dataflow.googleapis.com/ 
Failed to report setup error to service: could not lease work item to report failure (no work items returned)

【问题讨论】:

    标签: python google-cloud-dataflow apache-beam


    【解决方案1】:

    卡住管道的一个常见原因是工作人员无法启动。在 UI 中,您应该能够点击顶部附近的“日志”,然后点击显示“Stackdriver”的链接。这应该会将您带到 Stackdriver Logging 页面,该页面配置为查看给定作业的 worker 日志。如果您将其从worker 更改为worker-startup,它应该会向您显示尝试启动工作人员的日志。如果在启动过程中出现问题,它们应该会显示在这里。

    【讨论】:

    • 我在检查日志后更新了问题,你能建议如何继续吗?
    【解决方案2】:

    当作业提交给数据流服务时,它会为工作人员安装最新版本的 apache-beam。目前apache-beam的最新版本是2.1.0。 apache beam 或 google cloud python 包必须使用名为 six 的 python 包进行内部实现。

    正如this 回答所暗示的,最新版本的包six,即1.11.0 不适用于apache-beam 2.1.0

    我建议您为数据流服务提供一个设置文件,其中会提到 six 的版本应该是 1.10,而不是 1.11。你可以通过给设置文件提供install-requires参数来做到这一点

    install_requires=[
        'six==1.10.0',      
        ]
    

    您可以在this link阅读有关 setuptools 的信息

    您可以在this link阅读有关如何为数据流作业提供设置文件的信息


    更新

    当您将作业提交到数据流时,数据流服务会启动计算引擎作为其工作人员,并安装数据流运行所需的所有要求。当它安装的所有 python 包都在数据流服务的手中时,它会安装它们的默认配置。这可能会导致诸如您的问题。

    对此的解决方案是通过为管道的pipeline_options 提供requirements_file 参数来为数据流作业提供一个需求文件。这将使数据流服务安装您在worker上的需求文件中提到的python包,并且可以避免由于包的版本控制而引起的问题。

    您可以在this link 上找到有关如何向数据流管道提供需求文件的信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多