"numWorkers" не может работать ... Как мне заставить его работать как задумано? - PullRequest
0 голосов
/ 27 января 2020

При запуске DataFlow на GCP DataFlow не использует узлы, указанные в «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 \
          "

enter image description here

1 Ответ

0 голосов
/ 28 января 2020

Даже если вы указываете флаг "--autoscalingAlgorithm = NONE", вы также используете Streaming Engine , который является типом автоматического масштабирования.

Я провел тест, используя это Быстрый запуск , при использовании Streaming Engine:

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 \
  "

Я экспериментировал с тем же поведением.

enter image description here

Вы также должны убедиться, что квота была достигнута.

enter image description here

При превышении квоты поток данных сбрасывает флаг "--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 \

enter image description here

Как вы можете видеть при использовании количества рабочих (или процессоров), которые не превышают мою квоту и отключив функцию Streaming Engine, я смог использовать всех указанных рабочих.

...