Почему параллелизм по умолчанию для искрового контента отличается от количества виртуальных ЦП? - PullRequest
1 голос
/ 25 мая 2020

Я создал кластер в Google Cloud Platform Datapro c с приведенным ниже фрагментом кода:

gcloud dataproc clusters create $SOLO \
    --project $PROJ \
    --bucket $STORAGE \
    --region $REGION \
    --image-version 1.4-ubuntu18 --single-node \
    --master-machine-type n1-standard-8 \
    --master-boot-disk-type pd-ssd --master-boot-disk-size 100 \
    --initialization-actions gs://goog-dataproc-initialization-actions-$REGION/python/pip-install.sh \

Из документации Google здесь , n1-standard-8 имеет 8 виртуальных ЦП .

У меня есть сценарий PySpark, который содержит приведенный ниже код:

import pyspark
sc = pyspark.SparkContext.getOrCreate()
print(sc.defaultParallelism)

Когда я отправляю этот сценарий PySpark в кластер, журнал заданий показывает, что параллелизм содержимого Spark по умолчанию равен 2 .

Почему sc.defaultParallelism возвращает 2, а не 8?

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Угон Генри, основанный на моем небольшом знании параллельных вычислений, n1-standard-8 - это то, что вы можете получить на максимуме, если планировщик заданий не позволяет динамически выделять (а не увеличивать) ресурсы для вашей работы из пула доступных ресурсов. Для некоторых вакансий может потребоваться меньше, чем указано изначально, и, соответственно, им назначается от более 1 до менее 8.

0 голосов
/ 26 мая 2020

Согласно Spark do c, обычно этот параметр имеет значение только в контексте операций распределенного перемешивания . Даже в этом контексте это также зависит от того, какую операцию он выполняет, например, уменьшить / объединить / распараллелить и не всегда повторно запускать количество ядер на локальной машине.

...