Память исполнителя и количество исполнителей
Память исполнителя и никакие исполнители / узлы не связаны между собой, поэтому сначала вы должны начать выбирать память исполнителя или номер исполнителей, а затем на основании своего выбора вы можетеследуйте этому, чтобы установить свойства для получения желаемых результатов
В 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