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: установщик исполнителя instance не меняет исполнителей, но увеличение параметра memoty-mb в моем случае не помогло.


person Anna    schedule 26.10.2016    source источник
comment
Как вы запускаете свое приложение? Можете ли вы опубликовать свою команду spark-submit? Не могли бы вы подробнее рассказать о памяти ваших узлов?   -  person eliasah    schedule 26.10.2016
comment
Вы действительно решили мою проблему своим вопросом! Я запускаю spark-shell, а затем выполняю команды scala внутри. Я добавил --num-executors 6 в run-spark-shell и получил 6 исполнителей. Но почему это так? Разве это не необязательный параметр для spark.executor.instances? Я думал, что достаточно установить его в настройках по умолчанию.   -  person Anna    schedule 26.10.2016
comment
Прохладный. Тогда закрою вопрос.   -  person eliasah    schedule 26.10.2016
comment
Я понял. Я изменил неправильный файл spark-defaults.conf. У меня два пользователя, и у каждого пользователя был свой каталог SPARK_HOME (я этого раньше не знал). Вот почему я не увидел никакого эффекта от своих настроек для одного из пользователей. Так просто и так много времени. Спасибо за помощь.   -  person Anna    schedule 26.10.2016
comment
Пожалуйста ! К сожалению, иногда простые вещи могут занять много времени, если вы посмотрите на них с одной пары глаз ;-)   -  person eliasah    schedule 26.10.2016
comment
Ответьте на свой вопрос (stackoverflow.com/help/self-answer, meta.stackexchange .com / questions / 16930 /), если вы нашли решение.   -  person    schedule 27.10.2016
comment
@eliasah: пожалуйста, не добавляйте [решено] к заголовкам, мы этого не делаем - вместо этого мы просим OP отметить / принять ответ ниже.   -  person halfer    schedule 27.10.2016
comment
@halfer спасибо. Забыл об этом! При этом проголосовал за закрытие вопроса, потому что актуальной проблемы не было :)   -  person eliasah    schedule 27.10.2016


Ответы (1)


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

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

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

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

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

person Anna    schedule 26.10.2016