Spark на Yarn Resource Management в Amazon EMR: как использовать все доступные ядра для выполнения искровых заданий - PullRequest
0 голосов
/ 04 мая 2020

У меня запущено искровое задание в кластере EMR со следующей конфигурацией кластера:

Master : 1: m4.2xlarge: 32 ГБ памяти, 8 виртуальных ЦП. Core : 2: m4.2xlarge: 32 ГБ памяти, 8 виртуальных ЦП. Узлы задач : до 52: r4.2xlarge: 61 ГиБ памяти, 8 виртуальных ЦП.


Вот моя конфигурация отправки с отправкой, основанная на этом блоге:

1 : https://blog.cloudera.com/how-to-tune-your-apache-spark-jobs-part-2/.

spark.yarn.executor.memory = 19 г spark.executor.cores = 3 spark.yarn.driver.memoryOverhead = 2g spark.executor.memoryOverhead = 2g spark.dynamicAllocation.enabled = верно spark.dynamicAllocation.minExecutors = 7 spark.dynamicAllocation.initialExecutors = 7 spark.dynamicAllocation.maxExecutors = 1000 spark.shuffle.service.enabled = верно spark.yarn.maxAttempts = 1

Я использую перекрестное соединение 2 наборов данных для варианта использования. И я пытаюсь использовать все биты памяти и процессора, доступные в кластере, которые я могу использовать, используя вышеуказанные настройки. Я могу успешно использовать всю доступную память в кластере, но не CPU . Я вижу, что несмотря на то, что доступно 432 ядра , но в работе Spark можно использовать , только 103 ядра используются , как показано на скриншоте. Я вижу такое же поведение, когда задание выполняется в режиме Yarn-Client (Zeppelin) или Yarn-Cluster.

Я не уверен, что параметр отсутствует или является неправильным. Любые предложения по решению этого приветствуются. enter image description here

1 Ответ

0 голосов
/ 10 мая 2020

Если вы видите это в YARN ui, вероятно, вы должны добавить это в yarn-site.xml

yarn.scheduler.capacity.resource-calculator: org.apache.hadoop.yarn.util.resource.DominantResourceCalculator

У меня была такая же путаница. На самом деле, при использовании DefaultResourceCalculator в пользовательском интерфейсе Yarn он только рассчитывает использование памяти, за кулисами он мог использовать более 1 ядра, но вы увидите только 1 используемое ядро. С другой стороны, DominantResourceCalculator вычисляет ядро ​​и память для распределения ресурсов и показывает фактическое количество ядра и памяти.

Вы также можете включить ganglia или просмотреть показатели EMR для получения более подробной информации.

...