Google cloud dataflow &引用;“numWorkers”;无法工作…如何使其按预期工作?
在GCP上运行数据流时,数据流不使用“numWorkers”中指定的节点。 在控制台上,我可以看到“TargetWorkers”与“numWorkers”是相同的数字。但实际情况并非如此。。。 如何使其按预期工作 这是部署模板的命令Google cloud dataflow &引用;“numWorkers”;无法工作…如何使其按预期工作?,google-cloud-dataflow,Google Cloud Dataflow,在GCP上运行数据流时,数据流不使用“numWorkers”中指定的节点。 在控制台上,我可以看到“TargetWorkers”与“numWorkers”是相同的数字。但实际情况并非如此。。。 如何使其按预期工作 这是部署模板的命令 mvn -Pdataflow-runner compile exec:java -Dexec.mainClass=fqdn.of.main.Class \ -Dexec.args=" \ --project=my_gcp_pr
mvn -Pdataflow-runner compile exec:java -Dexec.mainClass=fqdn.of.main.Class \
-Dexec.args=" \
--project=my_gcp_project_name \
--stagingLocation=gs://my_product/staging/ \
--templateLocation=gs://my_product/template/Template \
--runner=DataflowRunner \
--autoscalingAlgorithm=NONE \
--numWorkers=90 \
--workerMachineType=n1-highmem-4 \
--enableStreamingEngine=true \
"
即使您指定了标志“-autoscalingAlgorithm=NONE”,您也在使用一种类型的自动缩放 在使用流媒体引擎时,我使用此进行了测试:
mvn -Pdataflow-runner compile exec:java \
-Dexec.mainClass=org.apache.beam.examples.WordCount \
-Dexec.args="--project=support-data-ez \
--stagingLocation=gs://datacert/staging/ \
--output=gs://datacert/output \
--runner=DataflowRunner \
--autoscalingAlgorithm=NONE \
--numWorkers=90 \
--workerMachineType=n1-highmem-4
--enableStreamingEngine=true \
"
我也尝试过同样的行为
您还必须验证是否已达到任何配额
当超过配额时,数据流将丢弃标志“-numWorkers=90”,并确定适当的工作人员数量。所以,考虑这个因素。
mvn -Pdataflow-runner compile exec:java \
-Dexec.mainClass=org.apache.beam.examples.WordCount \
-Dexec.args="--project=support-data-ez \
--stagingLocation=gs://datacert/staging/ \
--output=gs://datacert/output \
--runner=DataflowRunner \
--autoscalingAlgorithm=NONE \
--numWorkers=58 \
--workerMachineType=n1-standard-1
--enableStreamingEngine=false \
正如您所看到的,当使用数量不超过我的配额的工作者(或CPU)并禁用流引擎功能时,我可以使用所有指定的工作者。如果使用流引擎,它将自动缩放。这可能是一个bug,没有文档记录,但您的调查对它有很大帮助。非常感谢你!我做了更深入的调查,发现当你启用流媒体引擎时,有两套独立的机器:worker(就像在任何数据流作业中一样,它们是GCE机器)和Windmill实例,它们是在谷歌基础设施上运行的进程。禁用自动校准至少应该保持GCE工作人员的数量不变。所以这似乎是自动缩放的一个问题。所以报告问题,这是个好主意。似乎问题已经报告给了数据流工程团队,您可以跟踪进度,测试的作业是批处理作业吗?