Google cloud dataflow &引用;“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

在GCP上运行数据流时,数据流不使用“numWorkers”中指定的节点。 在控制台上,我可以看到“TargetWorkers”与“numWorkers”是相同的数字。但实际情况并非如此。。。 如何使其按预期工作

这是部署模板的命令

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工作人员的数量不变。所以这似乎是自动缩放的一个问题。所以报告问题,这是个好主意。似乎问题已经报告给了数据流工程团队,您可以跟踪进度,测试的作业是批处理作业吗?