Apache Spark: настройка экземпляров исполнителя

Я запускаю свое приложение Spark на YARN с параметрами:

в spark-defaults.conf:

spark.master yarn-client
spark.driver.cores 1
spark.driver.memory 1g
spark.executor.instances 6
spark.executor.memory 1g

в yarn-site.xml:

yarn.nodemanager.resource.memory-mb 10240

Все остальные параметры установлены по умолчанию.

У меня кластер из 6 узлов, и на каждом узле установлен компонент Spark Client. Каждый раз, когда я запускаю приложение, в пользовательском интерфейсе Spark видны только 2 исполнителя и 1 драйвер. Исполнители появляются на разных узлах.

Почему Spark не может создать больше исполнителей? Почему только 2 вместо 6?

Я нашел очень похожий вопрос: Apache Spark: установка экземпляров executor не меняет исполнителей, но увеличение параметра memoty-mb не помогло в моем случае.

1 ответ

Конфигурация выглядит нормально на первый взгляд.

Убедитесь, что вы переписали правильный файл spark-defaults.conf.

казнить echo $SPARK_HOME для текущего пользователя и проверьте, находится ли измененный файл spark-defaults в каталоге $SPARK_HOME/conf/. В противном случае Spark не сможет увидеть ваши изменения.

Я изменил неправильный файл spark-defaults.conf. В моей системе было два пользователя, и у каждого пользователя был свой набор каталогов $ SPARK_HOME (раньше я этого не знал). Вот почему я не мог видеть никакого эффекта моих настроек для одного из пользователей.

Вы можете запустить свою спарк-оболочку или спарк-представить с аргументом --num-executors 6 (если вы хотите иметь 6 исполнителей). Если Spark создает больше исполнителей, чем раньше, вы будете уверены, что это не проблема с памятью, а что-то с нечитаемой конфигурацией.

Другие вопросы по тегам