Я использую 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
не действует?