pyspark local[*] против spark.executor.core»

#python #apache-spark #pyspark

Вопрос:

Я запускаю кластер spark в локальном режиме, используя python pyspark. Один из параметров конфигурации spark имеет значение: "spark.executor.cores": "8"
"spark.cores.max": "8"

После настройки всех параметров:

 SparkSession.builder.config(conf=spark_configuration)
 

Я создаю контекст искры:
SparkSession.builder.master("local[*]").appName(application_name).getOrCreate()

Моя машина имеет 16 ядер, и я вижу, что приложение потребляет все доступные ресурсы. Мой вопрос в том, как опция "local[*]" vs "spark.executor.cores": "8" влияет на драйвер spark (сколько ядер будет потреблять локальный исполнитель)?

Комментарии:

1. Я узнал, что ядра должны быть установлены с помощью: setMaster, например. spark_configuration.setMaster(‘локальный[{}]’.формат(spark_options[«spark.исполнитель.ядра»]))

Ответ №1:

Это то, что я наблюдал в системе с 12 ядрами:

Когда я отмечу ядра исполнителей как 4, всего будет создано 3 исполнителя с 4 ядрами каждый в автономном режиме.

автономный режим spark-ui

Но это не относится к локальному режиму. Даже если я передам флаг --num-executors 4 или изменю spark.driver.cores/spark.executor.cores/spark.executor.instances , ничто не изменит количество исполнителей. Все время там будет только один исполнитель с идентификатором драйвера, и ядра будут равны тому, что мы передаем в master. spark-локальный режим пользовательского интерфейса

Комментарии:

1. Что я наблюдаю, так это то, что этот исполнитель использует все доступные ядра (16) вместо 8.

2. Я думаю, это потому, что он получает конфигурацию ядер из локального[n], а не из spark.executor.core.