И планировщик Hadoop Fair, и планировщик емкости не планируют должным образом

Я использую CDH5.1.0 (hadoop 2.3.0). 2 узла имен (2x 32 ГБ ОЗУ, 2 ядра) и 3 узла данных (3x 16 ГБ ОЗУ, 2 ядра)

Я планирую задания mapreduce от одного пользователя в очереди по умолчанию (другие пользователи и другие очереди не настроены).

При использовании планировщика емкости происходит следующее: я могу отправить несколько заданий, но параллельно выполняются только 2 задания (состояние «выполняется»).

При использовании честного планировщика происходит следующее: я отправляю несколько заданий, и 4 задания устанавливаются в статус «выполняется» кластером/планировщиком. Эти задания остаются на 5% прогресса навсегда. Если отдельные задания уничтожаются, новое задание получает статус «выполняется» на 5%, опять же, без дальнейшего прогресса. Задания начинают выполняться только после того, как останется менее 4 заданий и в очередь больше не будет отправлено ни одного задания.

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

Мой вопрос: как настроить кластер/пряжу/планировщик/динамические и статические пулы ресурсов, чтобы планирование работало?

Вот некоторые параметры конфигурации:

yarn.scheduler.minimum-allocation-mb = 2GB
yarn.scheduler.maximum-allocation-mb = 12GB
yarn.scheduler.minimum-allocation-vcores = 1
yarn.scheduler.maximum-allocation-vcores = 2
yarn.nodemanager.resource.memory-mb = 12GB
yarn.nodemanager.resource.cpu-vcores  = 2
mapreduce.map.memory.mb = 12GB
mapreduce.reduce.memory.mb = 12GB
mapreduce.map.java.opts.max.heap = 9.6GB
mapreduce.reduce.java.opts.max.heap = 9.6GB
yarn.app.mapreduce.am.resource.mb = 12GB
ApplicationMaster Java Maximum Heap Size = 788MB
mapreduce.task.io.sort.mb = 1GB

Я оставил статические и динамические пулы ресурсов с настройками по умолчанию (cloudera) (например, параметр Max Running Apps пуст)


person Reinis    schedule 28.07.2014    source источник
comment
Смогли ли вы найти ответ на это. У меня похожая проблема, когда я использую планировщик ресурсов, запускается только одно приложение, другие находятся в состоянии ожидания.   -  person sparkDabbler    schedule 04.03.2016
comment
К сожалению нет. В то же время я сбросил CDH, переключился на дистрибутив MapR, сбросил и его в пользу apache spark на mesos, что сделало эту проблему для меня устаревшей.   -  person Reinis    schedule 10.03.2016


Ответы (2)


НЕ РЕШЕНИЕ, А ВОЗМОЖНЫЙ РЕШЕНИЕ

В какой-то момент мы обсуждали эту проблему с Кристианом Нойндорфом из консалтинговой компании MapR, и он заявил, что в FairScheduler есть ошибка взаимоблокировки (не специфичная для CDH, а скорее в стандартном хаупе!).

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

в yarn-site.xml (не знаю, почему это должно быть установлено)

<property>
    <name>yarn.scheduler.fair.user-as-default-queue</name>
    <value>false</value>
    <description>Disable username for default queue </description>
</property>

в справедливом планировщике.xml

<allocations>
    <queue name="default">
         <!-- you set an integer value here which is number of the cores at your disposal minus one (or more) -->
        <maxRunningApps>number of cores - 1</maxRunningApps>
   </queue>
</allocations>
person Reinis    schedule 10.03.2016

Уменьшите эти параметры:

mapreduce.map.memory.mb
mapreduce.reduce.memory.mb
yarn.app.mapreduce.am.resource.mb

до 6 Гб (и соответственно уменьшить размер кучи).

В текущей конфигурации вы можете запускать только три контейнера (по одному на узел).

Для запуска задания YARN требуется как минимум два контейнера (один контейнер для ApplicationMaster, а другой — для задачи Map или Reduce). Таким образом, вы можете легко попасть в ситуацию, когда вы запускаете дерево ApplicationMasters для трех разных заданий, которые будут зависать там навсегда, потому что у вас не осталось контейнеров для выполнения фактической обработки Map/Reduce.

Кроме того, вы должны ограничить количество приложений, которые могут быть запущены параллельно в вашем кластере (потому что у вас не так много ресурсов), до 2 или 3.

person facha    schedule 10.03.2016