Google Bigtable 导出挂起、卡住,然后在 Dataflow 中失败。工人从未分配

Google Bigtable export hangs, is stuck, then fails in Dataflow. Workers never allocated

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

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

导出我的大表进行备份。我试过 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.

还有其他人遇到过这种情况吗?

在测试了对我的 GCloud 项目权限的大量更改、检查了我的配额等之后,结果证明我的问题出在网络上。这个 Stack Overflow question/answer 真的很有帮助:

原来我们的团队在gcloud项目中创建了一些networks/subnets并删除了默认网络。当数据流试图为工作人员创建 VM 到 运行 时,它失败了,因为它无法在 "default" 网络中这样做。

数据流日志中没有错误,只有上面关于 "dataflow being stuck." 的错误 我们最终在云主页的 "Activity" 流中找到了一条有用的错误消息。然后,我们通过创建一个字面上称为 "default" 的 VPC 解决了这个问题,在所有区域中都有名为 "default" 的子网。 Dataflow 随后能够正确分配 VM。

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

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