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。
您应该能够将 network
和 subnet
作为管道参数传递,但这对我们使用提供的 BigTable 导出脚本不起作用(问题中的 link) ,但是如果您直接针对数据流 API 编写 Java 代码,您可能可以通过在代码中设置正确的 network
和 subnet
来解决我遇到的问题。
希望这对正在处理我们看到的症状的任何人有所帮助。
我正在尝试使用这个过程:
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。
您应该能够将 network
和 subnet
作为管道参数传递,但这对我们使用提供的 BigTable 导出脚本不起作用(问题中的 link) ,但是如果您直接针对数据流 API 编写 Java 代码,您可能可以通过在代码中设置正确的 network
和 subnet
来解决我遇到的问题。
希望这对正在处理我们看到的症状的任何人有所帮助。