【问题标题】:Google Bigtable export hangs, is stuck, then fails in Dataflow. Workers never allocatedGoogle Bigtable 导出挂起、卡住,然后在 Dataflow 中失败。工人从未分配过
【发布时间】:2018-03-27 16:22:17
【问题描述】:

我正在尝试使用这个过程:

https://cloud.google.com/bigtable/docs/exporting-sequence-files

导出我的 bigtable 进行备份。我试过 bigtable-beam-import 版本 1.1.2 和 1.3.0 没有成功。该程序似乎正确地启动了数据流,但无论我使用什么设置,工作人员似乎从未被分配到工作中。日志总是说:

Autoscaling: Raised the number of workers to 0 based on the rate of progress in the currently running step(s).

然后它挂起,工人永远不会被分配。如果我让它运行,日志会说:

2018-03-26 (18:15:03) Workflow failed. Causes: The Dataflow appears to be stuck. Workflow failed. Causes: The Dataflow appears to be stuck. You can get help with Cloud Dataflow at https://cloud.google.com/dataflow/support.

然后它被取消:

Cancel request is committed for workflow job...

我想我已经尝试更改此处描述的所有可能的管道选项:

https://cloud.google.com/dataflow/pipelines/specifying-exec-params

我尝试关闭自动缩放并像这样指定工作人员的数量:

java -jar bigtable-beam-import-1.3.0-shaded.jar export \
    --runner=DataflowRunner \
    --project=mshn-preprod \
    --bigtableInstanceId=[something]\
    --bigtableTableId=[something] \
    --destinationPath=gs://[something] \
    --tempLocation=gs://[something] \
    --maxNumWorkers=10 \
    --zone=us-central1-c \
    --bigtableMaxVersions=1 \
    --numWorkers=10 \
    --autoscalingAlgorithm=NONE \
    --stagingLocation=gs:[something] \
    --workerMachineType=n1-standard-4

我还尝试指定工作机器类型。没有什么变化。总是自动缩放到 0 并失败。如果有 Dataflow 团队的人在,您可以查看失败的作业 ID:exportjob-danleng-0327001448-2d391b80。

还有其他人经历过吗?

【问题讨论】:

  • 所有不为google工作的人,google的BigTable导出工具的源码在这里(如有错误请指正):github.com/GoogleCloudPlatform/cloud-bigtable-client/tree/…
  • 这听起来像是 Dataflow 服务问题,而不是 Cloud Bigtable 问题。它可能与 GCE 配额或类似的东西有关。我建议创建一个支持问题。
  • @SolomonDuskis 我们弄明白了(下)。绝对是它尝试分配虚拟机的部分的数据流问题。你走在正确的轨道上。有帮助,谢谢。

标签: google-cloud-dataflow google-cloud-bigtable


【解决方案1】:

在测试了对我的 GCloud 项目权限的大量更改、检查我的配额等之后,结果发现我的问题与网络有关。这个 Stack Overflow 问题/答案真的很有帮助:

Dataflow appears to be stuck 3

事实证明,我们的团队在 gcloud 项目中创建了一些网络/子网,并删除了默认网络。当 dataflow 尝试创建 VM 以供工作人员运行时,它失败了,因为它无法在“默认”网络中这样做。

数据流日志中没有错误,只是上面关于“数据流被卡住”的错误。我们最终在 gloud 主页的“活动”流中找到了有用的错误消息。然后,我们通过创建一个字面上称为“默认”的 VPC 解决了这个问题,所有区域中的子网都称为“默认”。然后,Dataflow 能够正确分配 VM。

您应该能够将 networksubnet 作为管道参数传递,但这对我们使用提供的 BigTable 导出脚本不起作用(问题中的链接),但如果您直接编写 Java 代码针对 Dataflow API,您可以通过在代码中设置正确的 networksubnet 来解决我遇到的问题。

希望这对正在处理我们看到的症状的人有所帮助。

【讨论】:

  • 如果 Dataflow 团队的任何人正在阅读,您能否请针对此用例更具体地显示“它卡住了”错误消息?解决这个问题浪费了很多时间。
  • 嗨@dleng。云支持在这里!我已代表您提交了功能请求,您可以在此处关注更新:issuetracker.google.com/77939959
猜你喜欢
  • 1970-01-01
  • 2019-10-28
  • 2022-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-13
  • 2021-08-08
  • 1970-01-01
相关资源
最近更新 更多