#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 ядрами каждый в автономном режиме.
Но это не относится к локальному режиму. Даже если я передам флаг --num-executors 4
или изменю spark.driver.cores/spark.executor.cores/spark.executor.instances
, ничто не изменит количество исполнителей. Все время там будет только один исполнитель с идентификатором драйвера, и ядра будут равны тому, что мы передаем в master.
Комментарии:
1. Что я наблюдаю, так это то, что этот исполнитель использует все доступные ядра (16) вместо 8.
2. Я думаю, это потому, что он получает конфигурацию ядер из локального[n], а не из spark.executor.core.