Как рассчитать память исполнителя, число исполнителей, количество ядер исполнителей и объем памяти драйвера для чтения файла объемом 40 ГБ с помощью Spark? - PullRequest
0 голосов
/ 07 ноября 2019

Конфигурация кластера пряжи: 8 узлов 8 ядер на узел 8 ГБ ОЗУ на узел 1 ТБ жесткий диск на узел

1 Ответ

0 голосов
/ 07 ноября 2019

Память исполнителя и количество исполнителей

Память исполнителя и никакие исполнители / узлы не связаны между собой, поэтому сначала вы должны начать выбирать память исполнителя или номер исполнителей, а затем на основании своего выбора вы можетеследуйте этому, чтобы установить свойства для получения желаемых результатов

В YARN эти свойства будут влиять на количество контейнеров (/ executors в Spark), которые могут быть созданы в NodeManager на основе значений свойства spark.executor.cores, spark.executor.memory (вместе с накладными расходами памяти исполнителя)

Например, если кластер с 10 узлами (ОЗУ: 16 ГБ, ядра: 6) и установлен со следующими свойствами пряжи

yarn.scheduler.maximum-allocation-mb=10GB 
yarn.nodemanager.resource.memory-mb=10GB
yarn.scheduler.maximum-allocation-vcores=4
yarn.nodemanager.resource.cpu-vcores=4

Затем со свойствами искры spark.executor.cores= 2, spark.executor.memory = 4 ГБ, можно ожидать 2 исполнителя / узла, итого вы получите 19 исполнителей + 1 контейнер для драйвера

Если свойства spark равны spark.executor.cores=3, spark.executor.memory=8GB, вы получите 9 исполнителей(только 1 исполнитель / узел) + 1 контейнер для драйвера ссылка

Память драйвера

spark.driver.memory - максимальный размер of кучи памяти Java каждого драйвера Spark

spark.yarn.driver.memoryOverhead - количество дополнительной памяти вне кучи, которую можно запросить у YARN для каждого драйвера. Вместе с spark.driver.memory это общая память, которую YARN может использовать для создания JVM для процесса драйвера.

Spark Память драйвера не влияет непосредственно на производительность , но гарантирует , что задания Spark выполняются без ограничений памяти в драйвере . Отрегулируйте общий объем памяти, выделенный для драйвера Spark, используя следующую формулу, предполагая, что значение yarn.nodemanager.resource.memory-mb равно X:

  • 12 ГБ, если X больше 50 ГБ
  • 4 ГБ, если X составляет от 12 ГБ до 50 ГБ
  • 1 ГБ, если X составляет от 1 ГБ до 12 ГБ
  • 256 МБ, если X меньше 1 ГБ

Эти цифры на сумму spark.driver.memory и spark.yarn.driver.memoryOverhead. Накладные расходы должны составлять 10-15% от общего объема.

Вы также можете перейти по этой ссылке Cloudera для настройки заданий Spark

...