Искра на ПРЯЖЕ, слишком мало используемых ядер

Я использую Spark в кластере YARN (HDP 2.4) со следующими настройками:

  • 1 Masternode
    • 64 GB RAM (50 GB usable)
    • 24 ядра (можно использовать 19 ядер)
  • 5 Slavenodes
    • 64 GB RAM (50 GB usable) each
    • 24 ядра (можно использовать 19 ядер) каждое
  • YARN settings
    • memory of all containers (of one host): 50 GB
    • минимальный размер контейнера = 2 ГБ
    • максимальный размер контейнера = 50 ГБ
    • vcores = 19
    • минимальное количество ядер / контейнер = 1
    • максимальное количество ядер / контейнер = 19

Когда я запускаю свое приложение Spark с помощью команды spark-submit --num-executors 30 --executor-cores 3 --executor-memory 7g --driver-cores 1 --driver-memory 1800m ... YARN, создается 31 контейнер (по одному для каждого процесса-исполнителя + один процесс драйвера) со следующими настройками:

  • Правильно: главный контейнер с 1 ядром и ~ 1800 МБ ОЗУ.
  • Правильно: 30 подчиненных контейнеров с ~ 7 ГБ ОЗУ каждый.
  • НО НЕПРАВИЛЬНО: каждый подчиненный контейнер работает только с 1 ядром вместо 3, согласно пользовательскому интерфейсу YARN ResourceManager (он показывает только 31 из 95 используемых вместо 91 = 30 * 3 + 1), см. Снимок экрана ниже

введите описание изображения здесь

У меня вопрос: почему параметр spark-submit --executor-cores 3 не действует?


person D. Müller    schedule 14.07.2016    source источник


Ответы (3)


Хорошо, похоже, это та же проблема, что обсуждается здесь: yarn не соблюдает yarn.nodemanager.resource.cpu-vcores. У меня тоже сработало решение.

person D. Müller    schedule 14.07.2016

При использовании Ambari:

  • В правом верхнем углу выберите YARN Queue Manager.
  • Раздел планировщика
  • Измените раскрывающийся список «Калькулятор» на «Доминирующий ресурс»
person Adrian Torrie    schedule 01.06.2018

Пользовательский интерфейс может вводить в заблуждение. Когда принудительное использование vcore отключено в YARN, предполагается, что на каждый контейнер будет приходиться только одно ядро, тогда как на самом деле, если вы посмотрите на фактическое использование ЦП физической машины, оно может использовать все ядра. Также проверьте использование ядра в SparkUI, это обычно дает лучшее представление о фактическом использовании ЦП.

person ekinrf    schedule 28.05.2019