Распределение ресурсов с помощью искры и пряжи - PullRequest
0 голосов
/ 28 июня 2018

Я использую Zeppelin 0.7.3 с Spark 2.3 в режиме клиента пряжи. Мои настройки:

Spark:

spark.driver.memory 4096m

spark.driver.memoryOverhead 3072 м

spark.executor.memory 4096m

spark.executor.memoryOverhead 3072m

spark.executor.cores 3

spark.executor.instances 3

Пряжа:

Минимальное распределение: память: 1024, vCores: 2

Максимальное распределение: память: 9216, vCores: 6

Приложение, запущенное Zeppelin, получает следующие ресурсы:

Беговые контейнеры 4

выделенные ЦП VCores 4

выделенная память, МБ 22528

Yarn allocation

  1. Я не совсем понимаю объем памяти, выделяемый пряжей. Учитывая настройки, Я предположил бы, что пряжа сохранит (4096 + 3072) * 4 м = 28672 м. Тем не менее, похоже, опция spark.executor.memoryOverhead игнорируется (я также пробовал spark.yarn.executor.memoryOverhead без эффекта). Поэтому минимум 384 м выделяется как накладные расходы. Как минимальное выделение установлен на 1024 м, в результате мы получим (4096 + 3072) * 1 м + (4096 + 1024) * 3 м = 22528 м, где первый член драйвер и второе слагаемое суммируют память исполнителя.

  2. Почему выделено только 4 VCore процессора, хотя я и запросил больше, а минимальное установить на 2 и я запросил больше ядер? При поиске мастера приложений я нахожу следующих исполнителей:

Spark allocation

Здесь у исполнителей действительно есть по 3 ядра. Как мне узнать, какое значение является правильным или что я скучаю?

  1. Я попробовал несколько настроек, и в режиме клиента пряжи я должен использовать такие параметры, как spark.yarn.am.memory или spark.yarn.am.cores. Тем не менее, кажется, что они игнорируются пряжей. Почему это так? Кроме того, в режиме клиента пряжи драйвер должен работать снаружи пряжи Почему ресурсы по-прежнему распределяются внутри пряжи? Мой Zeppelin работает на той же машине как один из рабочих.

1 Ответ

0 голосов
/ 08 июля 2018

Одно искровое приложение имеет три роли: драйвер, мастер-приложение и исполнитель.

  1. В режиме клиента (один из режима развертывания) сам драйвер не запрашивает ресурс у пряжи, поэтому у нас есть один мастер-приложение, три исполнителя, ресурс которого должен быть выделен YARN. Поэтому я думаю, что спарк попросит (4G + 3G) * 3 для трех исполнителей и 1G для утра. Таким образом, Allocated Memory будет иметь размер 22 ГБ (22528 МБ).

  2. Что касается основного номера, я думаю, что Spark UI дает правильный ответ, потому что мой опыт.

...