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 создает больше исполнителей, чем раньше, вы будете уверены, что это не проблема с памятью, а что-то с нечитаемой конфигурацией.