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