Ответ 1
Позвольте мне сначала объяснить базовый набор свойств, необходимых для настройки вашего искрового приложения на кластере YARN.
Примечание. Контейнер в YARN эквивалентен Executor in Spark. Для понятности вы можете подумать, что оба они одинаковы.
На пряжи-site.xml:
yarn.nodemanager.resource.memory-mb
- общая память, доступная кластеру из заданного node.
yarn.nodemanager.resource.cpu-vcores
- общее количество процессоров, доступных для кластера из заданного node.
yarn.scheduler.maximum-allocation-mb
- максимальная память в мб, которая должна быть назначена для каждого контейнера пряжи.
yarn.scheduler.maximum-allocation-vcores
- максимальное количество vcores, которое может быть выделено за контейнер пряжи.
Пример: Если node имеет 16GB и 8vcores, и вы хотели бы внести 14GB и 6vcores в кластер (для контейнеров), затем установите свойства, как показано ниже:
yarn.nodemanager.resource.memory-mb: 14336 (14 ГБ)
yarn.nodemanager.resource.cpu-vcores: 6
И для создания контейнеров с 2GB и 1vcore каждый, установите следующие свойства:
yarn.scheduler.maximum-allocation-mb: 2049
yarn.scheduler.maximum-allocation-vcores: 1
Примечание.. Несмотря на то, что для создания 7 контейнеров с 2 ГБ имеется достаточно памяти (14 ГБ), в конфигурации выше будет создано только 6 контейнеров с 2 ГБ, а в кластер будет использоваться только 12 ГБ из 14 ГБ. Это связано с тем, что для кластера доступно только 6vcores.
Теперь на стороне искры,
Ниже свойств указывается запрашиваемая память для каждого исполнителя/контейнера
spark.driver.memory
spark.executor.memory
Ниже свойств указывается количество запросов для каждого исполнителя/контейнера
spark.driver.cores
spark.executor.cores
IMP: Все свойства памяти Spark и vcore должны быть меньше или равны конфигурации YARN
Ниже свойство определяет общее количество исполнителей/контейнеров, которые могут быть использованы для вашего искрового приложения из кластера YARN.
spark.executor.instances
Это свойство должно быть меньше общего количества контейнеров, доступных в кластере YARN.
Как только конфигурация пряжи будет завершена, искра должна запросить контейнеры , которые могут быть назначены на основе конфигураций YARN. Это означает, что если YARN настроен на выделение максимум 2 ГБ на контейнер, а Spark запрашивает контейнер с памятью 3 ГБ, то задание остановится или остановится, потому что YARN не может удовлетворить запрос искры.
Теперь для вашего варианта использования: Обычно настройка кластеров основана на рабочих нагрузках. Но ниже config должен быть более подходящим.
Доступная память: 10 ГБ * 2 узла Доступны Vcores: 5 * 2 vcores [Успение]
На пряжи-site.xml [В обоих узлах]
yarn.nodemanager.resource.memory-mb
: 10240
yarn.nodemanager.resource.cpu-vcores
: 5
yarn.scheduler.maximum-allocation-mb
: 2049
yarn.scheduler.maximum-allocation-vcores
: 1
Используя вышеприведенную конфигурацию, вы можете создать максимум 10 контейнеров на каждом из узлов, имеющих 2 ГБ, 1vcore для каждого контейнера.
Конфигурация Spark
spark.driver.memory
1536mb
spark.yarn.executor.memoryOverhead
512mb
spark.executor.memory
1536mb
spark.yarn.executor.memoryOverhead
512mb
spark.driver.cores
1
spark.executor.cores
1
spark.executor.instances
19
Пожалуйста, не стесняйтесь играть в эти конфигурации в соответствии с вашими потребностями.