Редуктор/перетасовка Hadoop YARN застрял

Я мигрировал с Hadoop 1 на Hadoop 2 YARN. Исходный код был перекомпилирован с использованием JAR-файлов MRV2 и не имел проблем с совместимостью. Когда я пытался запустить задание в YARN, карта работала нормально и достигла 100%, но сокращение застряло на ~ 6,7%. Нет проблем с производительностью. На самом деле, я проверил загрузку ЦП, оказалось, что когда редукция зависла, кажется, что вычислений не происходит, потому что ЦП в основном на 100% простаивает. Задание может успешно выполняться в Hadoop 1.2.1.

Я проверил сообщения журнала от resourcemanager и обнаружил, что после завершения карты больше не было выделено контейнеров, поэтому ни в одном контейнере не выполняется сокращение. Чем вызвана эта ситуация?

Мне интересно, связано ли это с настройкой свойства yarn.nodemanager.aux-services. Следуя официальному руководству(http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html), для этого свойства должно быть установлено значение mapreduce_shuffle, которое указывает, что MR по-прежнему будет использовать метод случайного воспроизведения по умолчанию вместо другого метода случайного воспроизведения. плагины(http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/PluggableShuffleAndPluggableSort.html). Я пытался не устанавливать это свойство, но Hadoop не позволял.

Вот журнал userlogs/applicationforlder/containerfolder/syslog, когда он вот-вот достигнет 7% сокращения. После этого журнал больше не обновлялся, и сокращение также прекратилось.

2014-11-26 09:01:04,104 INFO [fetcher#1] org.apache.hadoop.mapreduce.task.reduce.Fetcher: fetcher#1 about to shuffle output of map attempt_1416988910568_0001_m_002988_0 decomp: 129587 len: 129591 to MEMORY
2014-11-26 09:01:04,104 INFO [fetcher#1] org.apache.hadoop.mapreduce.task.reduce.InMemoryMapOutput: Read 129587 bytes from map-output for attempt_1416988910568_0001_m_002988_0
2014-11-26 09:01:04,104 INFO [fetcher#1] org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 129587, inMemoryMapOutputs.size() -> 2993, commitMemory -> 342319024, usedMemory ->342448611
2014-11-26 09:01:04,105 INFO [fetcher#1] org.apache.hadoop.mapreduce.task.reduce.Fetcher: fetcher#1 about to shuffle output of map attempt_1416988910568_0001_m_002989_0 decomp: 128525 len: 128529 to MEMORY
2014-11-26 09:01:04,105 INFO [fetcher#1] org.apache.hadoop.mapreduce.task.reduce.InMemoryMapOutput: Read 128525 bytes from map-output for attempt_1416988910568_0001_m_002989_0
2014-11-26 09:01:04,105 INFO [fetcher#1] org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 128525, inMemoryMapOutputs.size() -> 2994, commitMemory -> 342448611, usedMemory ->342577136
2014-11-26 09:01:04,105 INFO [fetcher#1] org.apache.hadoop.mapreduce.task.reduce.ShuffleSchedulerImpl: datanode03:13562 freed by fetcher#1 in 13ms

Было ли это распространенной проблемой при переходе с Hadoop 1 на 2? Была ли изменена стратегия запуска map-shuffle-sort-reduce в Hadoop 2? Что вызвало эту проблему? Большое спасибо. Любые комментарии помогут!

Основные настройки среды:

  • Версия Hadoop: 2.5.2
  • Кластер из 6 узлов с 8-ядерным ЦП, 15 ГБ памяти на каждом узле

Настройки связанных свойств:

  • пряжа.планировщик.максимальное-распределение-мб: 14336
  • yarn.scheduler.minimum-allocation-mb: 2500
  • пряжа.nodemanager.resource.memory-mb: 14336
  • yarn.nodemanager.aux-услуги: mapreduce_shuffle
  • mapreduce.task.io.sort.factor: 100
  • mapreduce.task.io.sort.mb: 1024

person Chandler Lee    schedule 26.11.2014    source источник
comment
Какие пользовательские настройки установлены в вашей работе? Каковы значения для mapreduce.map.memory.mb и mapreduce.reduce.memory.mb? Что выдает приложение драйвера, оно просто застряло на 6,7%?   -  person 0x0FFF    schedule 26.11.2014
comment
mapreduce.map.memory.mb и mapreduce.reduce.memory.mb не установлены, поэтому я думаю, что это означает отсутствие ограничения карты/уменьшения памяти. он застрял на ~7%. Я обновил вопрос, чтобы добавить вывод из userlogs/container*/syslog. Из журнала я узнал, что сокращение просто перестало работать, когда оно достигло времени сокращения на 7%.   -  person Chandler Lee    schedule 26.11.2014


Ответы (1)


Наконец решил проблему после того, как погуглил и узнал, что я разместил этот вопрос уже три месяца назад.

Это из-за искажения данных.

person Chandler Lee    schedule 07.03.2015