Испытывает очень низкую загрузку процессора Spark Jobs на AWS EMR - PullRequest
0 голосов
/ 22 апреля 2020

у нас есть искровое задание, которое читает файл CSV и применяет серию преобразований и записывает результат в файл или c,

задание искры разбивается на около 20 этапов и выполняется для около часа

input csv file size: 10 GB

конфигурация ресурса задания спарк-отправки:

driver-memory= 5 GB
num-executors= 2
executor-core= 3
executor-memory= 20 GB

Тип экземпляра EC2: r5d.xlarge т.е. 32GB Memory и 4 vCPU с прикрепленным 128 GB EBS volume

EMR Cluster включает в себя 1 Master Node и 2 Core machines

, когда мы запускаем искровое задание на указанных выше конфигурациях кластера, загрузка процессора только близка к 10-15%

нашей Требуется максимально увеличить использование процессора экземплярами EC2 для моей искровой работы.

Благодарим за любые предложения!

1 Ответ

2 голосов
/ 23 апреля 2020

AFAIK, если вы автоматически увеличиваете парлеллизм, загрузка ЦП будет увеличиваться, попробуйте использовать их в вашей конфигурации задания искры

num-executors= 4
executor-core= 5
executor-memory= 25 GB

специально, если вы увеличите ядро ​​процессора, парлеллизм увеличится ..

более 5 ядер не рекомендуется для каждого исполнителя. Это основано на исследовании, в котором любое приложение с более чем 5 одновременными потоками начало бы снижать производительность.

  • spark.dynamicAllocation.enabled может быть другим вариантом.
  • spark.default.parallelism = 2 * number of CPUs in total on worker узлы
  • Убедитесь, что вы всегда используете режим пряжи

Следуйте Используя maximizeResourceAllocation из aws документов там все это подробно обсуждается. Прочитайте его полностью

Вы можете настроить исполнителей так, чтобы они максимально использовали ресурсы на каждом узле кластера, используя классификацию конфигурации искры для установки опции maximizeResourceAllocation до true. Этот параметр EMR-Speci c вычисляет максимальные вычислительные ресурсы и ресурсы памяти, доступные для исполнителя на экземпляре в основной группе экземпляров. Затем он устанавливает соответствующие настройки искровых настроек по умолчанию на основе этой информации.

[
  {
    "Classification": "spark",
    "Properties": {
      "maximizeResourceAllocation": "true"
    }
  }
]

Дальнейшее чтение

...