Пример Hadoop WordCount застрял на карте 100% уменьшить 0%

[hadoop-1.0.2] → hadoop jar hadoop-examples-1.0.2.jar wordcount /user/abhinav/input     /user/abhinav/output
Warning: $HADOOP_HOME is deprecated.

****hdfs://localhost:54310/user/abhinav/input
12/04/15 15:52:31 INFO input.FileInputFormat: Total input paths to process : 1
12/04/15 15:52:31 WARN util.NativeCodeLoader: Unable to load native-hadoop library for     your platform... using builtin-java classes where applicable
12/04/15 15:52:31 WARN snappy.LoadSnappy: Snappy native library not loaded
12/04/15 15:52:31 INFO mapred.JobClient: Running job: job_201204151241_0010
12/04/15 15:52:32 INFO mapred.JobClient:  map 0% reduce 0%
12/04/15 15:52:46 INFO mapred.JobClient:  map 100% reduce 0%

Я установил hasoop на одном node, используя это руководство (http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/# run-the-mapreduce-job), и я пытаюсь запустить приведенный пример, но я застрял на карте, на 100% уменьшаю 0%. Что может быть причиной этого?

Ответ 1

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

Как только вы доказали себе, что есть свободные слоты для редуктора, доступные для запуска редуктора для вашей работы, найдите свою работу на веб-сайте отслеживания заданий и нажмите на нее, чтобы открыть ее. Теперь вы сможете увидеть количество заполненных карт - убедитесь, что это означает, что у вас нет запущенных карт. Иногда заполняется% в консоли, и у вас может быть картограф, который в данный момент пытается сказать, что он 100%, но проблема заканчивается.

Как только вы удовлетворены тем, что все ваши картографы закончили, посмотрите количество работающих редукторов - это показывает 0? Если это не показывает, что некоторые из них запущены - нажмите на количество работающих редукторов, чтобы открыть страницу рабочих сокращений, теперь щелкните по экземпляру, пока не получите возможность просматривать журналы для редуктора. Вы захотите просмотреть все журналы этого редуктора (не первые/последние 100 тыс.). Это должно рассказать вам, что на самом деле делает ваш редуктор, - скорее всего, пытается скопировать результаты с помощью преобразователей в редуктор node. Я предполагаю, что это ваша проблема, одно из сетевого или дискового пространства, но в любом случае, в конечном итоге hasoop должен вывести из строя редуктор и перенести его на другой node.

Ответ 2

В этой проблеме может быть много причин, наиболее правдоподобным было бы то, что у вас есть ошибка в вашем картере (исключение, бесконечный цикл,...)

Отладка:

  • Вход на localhost: 50030, вы должны увидеть список своих заданий. Найдите неудачную работу (ваш ID - job_201204151241_0010) и посмотрите на трассировку (не забудьте нажать "Все", иначе вы не увидите полный журнал).
  • Посмотрите на свой лог файл, они должны находиться под /usr/lib/hadoop/logs или что-то подобное (вам придется обратиться к вашим конфигурациям, чтобы узнать) и grep для сообщений об ошибках cat /path/to/logs/*.log | grep ERROR и посмотреть, это возвращает что-то.

Если ничего не выйдет, я советую вам помещать сообщения в журнал в свой блок, чтобы отлаживать вручную на каждом шаге, что происходит (при условии, что это выполняется в псевдодистрибутированном режиме).

Сообщите мне, как это происходит.

EDIT: как заметил Крис, редуктор находится на уровне 0%, поэтому проблема лежит на самом деле до этапа уменьшения.

Ответ 3

Я также столкнулся с этой проблемой на хосте, использующем Suse 11. Как отмечает Крис выше, проблема связана с картографом. Чтобы решить эту проблему, я редактировал файл /etc/hosts и удалял IP-адрес хоста. Например, в /etc/hosts

Ip.address.of.your.host      hostname

Изменить на

127.0.0.1                    hostname

Как только я сделал изменение выше и перезапустил, я смог запустить программу wordcount

Ответ 4

Я вижу ту же проблему, которая запускает псевдокластер на Mac 10.7.4. Это происходит, когда я просыпаюсь в спящем режиме. Похоже, что IP-адрес преобразователя был переопределен при пробуждении:

syslog:2012-09-14 16:52:06,542 WARN org.apache.hadoop.mapred.ReduceTask: attempt_201209141640_0003_r_000000_0 copy failed: attempt_201209141640_0003_m_000000_0 from 172.19.131.144
syslog:2012-09-14 16:52:06,546 INFO org.apache.hadoop.mapred.ReduceTask: Task attempt_201209141640_0003_r_000000_0: Failed fetch #1 from attempt_201209141640_0003_m_000000_0

Итак, после пробуждения из спящего режима перезапуск hadoop через stop-all.sh и start -all.sh исправляет эту проблему для меня.

Ответ 5

Возможно, я нашел другую причину для проблемы с "100% -ной скидкой на карту".

Моя задача карты создает огромное количество записей, и я запускаю hasoop в псевдокластерной среде.

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

2013-07-27 03:09:55,302 INFO org.apache.hadoop.mapred.Merger: Merging 10 intermediate segments out of a total of 334
2013-07-27 03:10:15,166 INFO org.apache.hadoop.mapred.Merger: Merging 10 intermediate segments out of a total of 325
2013-07-27 03:10:35,603 INFO org.apache.hadoop.mapred.Merger: Merging 10 intermediate segments out of a total of 316
...
2013-07-27 03:26:18,738 INFO org.apache.hadoop.mapred.Merger: Merging 10 intermediate segments out of a total of 28
2013-07-27 03:29:50,458 INFO org.apache.hadoop.mapred.Merger: Merging 10 intermediate segments out of a total of 19
2013-07-27 03:33:48,368 INFO org.apache.hadoop.mapred.Merger: Down to the last merge-pass, with 10 segments left of total size: 4424592099 bytes

Эта процедура может занять много времени в зависимости от размера и количества сегментов и скорости чтения/записи на диске.

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

Ответ 6

Я также столкнулся с этой проблемой. Но я редактирую файл etc/hosts следующим образом:

Ip.address.of.your.host      hostname   

Просто добавьте одну строку ниже выше, как показано ниже.

127.0.1.1     hostname

Вы должны заметить, что это 127.0.1.1 (а не 127.0.0.1), или вы столкнулись с проблемой после этого, например: "Подключитесь к узлу some_hostname port 22: Connection timed out"

Ответ 7

если вы используете Linux и используете одиночный node hasoop: перейдите в каталог /etc/hosts измените свои IP-адреса в этом формате

мастер вашего IP-адреса ваш-ip-адрес slave

перейти в каталог /hadoop/conf открыть мастера и набрать localhost в этом (удалить все другие адреса!) открыть подчиненные устройства и установить localhost в этом (удалить все другие адреса!)

запустите снова свою программу, она должна работать правильно.

Ответ 8

У меня была аналогичная проблема (не такая). Мои задачи застряли на 100% карте и на 16% меньше. Я столкнулся с этой проблемой в течение нескольких часов (для разных программ: grep, wordcount и т.д.), Пока я не столкнулся с этим вопросом и не посмотрел на ответ Криса - что в основном предлагает хороший способ отладки или определить проблему, с которой вы сталкиваетесь. (По-видимому, у меня нет репутации, чтобы проголосовать за его ответ, следовательно, этот пост).

После просмотра веб-интерфейса для отслеживания работы и перехода к точному файлу журнала потока задач (я не знал, что этот журнал существует), я обнаружил, что мой JobTracker не смог решить имя хоста datanode. Я добавил пару (ip, hostname) в файл моих хостов, и задача, которая застряла, вернулась к жизни и завершилась успешно.

Ответ 9

Я столкнулся с подобной проблемой, проблема заключалась в том, что не было места для задачи редуктора. Поэтому я освободил память. Лучше всего тоже смотреть журналы журналов worktracker: 50030/журналы/Hadoop-Hadoop-JobTracker-localhost.localdomain.log. Сообщение журнала: "WARN org.apache.hadoop.mapred.JobInProgress: нет места для уменьшения задачи. Node tracker_localhost.localdomain: localhost.localdomain/127.0.0.1: 57829 содержит 778543104 байт, но мы ожидаем, что для ввода ввода потребуется 1160706716"