Вопрос по hadoop, mapreduce – Пример Hadoop WordCount застрял на карте 100% уменьшить 0%

12
<code>[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%
</code>

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

это может помочьstackoverflow.com/questions/32511280/… Bruce_Wayne
Если вы следовали учебнику Майкла, я думаю, что вы установили hadoop в / usr / local / hadoop. Только в этом каталоге найдите tasktracker.log и другие файлы журналов. Проверьте наличие ошибок и опубликуйте их здесь shiva kumar s

Ваш Ответ

9   ответов
1

я нашел еще одну причину для "карты на 100% уменьшить на 0%" вопрос.

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

Я проверил журнал задач карты, и оказалось, что время между 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

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

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

14

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

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

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

Отличные советы. Я следовал этим указаниям и понял, что моя проблема в том, что брандмауэр Windows не позволяет файлу передаваться с узлов, на которых выполнялись преобразователи, на узлы, на которых пытался запустить редуктор (даже если это была все та же физическая машина).
Спасибо, что проинформировали ваше дело. У меня была такая же проблема 100% Map / 0% Reduce, и я обнаружил, что это связано с тем, что я подключен к SecureVPN.
1

если вы используете Linux и используетеsingle node hadoop: go to directory /etc/hosts change your ip addresses with this format

хозяин вашего IP-адреса Ваш IP-адрес раб

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

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

4

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

Ip.address.of.your.host      hostname

Изменить на

127.0.0.1                    hostname

После внесения изменений и перезапуска я смог запустить программу wordcount

0

проблема была в том, что нет места для задачи редуктора. Так что я освободил память. Лучше всего посмотреть журналы Jobtracker: 50030 / журналы / Hadoop-Hadoop-JobTracker-localhost.localdomain.log. Журнал сообщений: & quot; ПРЕДУПРЕЖДЕНИЕ org.apache.hadoop.mapred.JobInProgress: нет места для задачи сокращения. Узел tracker_localhost.localdomain: localhost.localdomain / 127.0.0.1: 57829 имеет 778543104 байтов свободного; но мы ожидаем, что сокращение ввода займет 1160706716 & quot;

2

оисходит, когда я просыпаюсь из спящего режима. Похоже, что 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 исправляет эту проблему для меня.

1

так:

Ip.address.of.your.host      hostname   

Просто добавьте одну строку ниже приведенной ниже

127.0.1.1     hostname

Вы должны заметить, что это 127.0.1.1 (а не 127.0.0.1), или вы столкнетесь с проблемой после того, как, например, & quot; Соединение с хостом some_hostname порт 22: Время соединения истекло & quot;

4

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

Для отладки:

Log onto localhost:50030, you should see a list of your jobs. Locate your job that failed (your ID is job_201204151241_0010), and look at the trace (don't forget to click on "All" or else you won't see the full log). Look at your logs disk, they should be under /usr/lib/hadoop/logs or something similar (you'll have to refer to your configurations to find out), and grep for error messages cat /path/to/logs/*.log | grep ERROR and see if this returns something.

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

Дайте мне знать, как это происходит.

EDITКрис отметил, что уровень редуктора равен 0%, поэтому проблема фактически стоит перед шагом уменьшения.

если редуктор равен 0%, то редуктор еще не вступил в фазу уменьшения (он все еще ожидает копирования данных), так что это не является ошибкой в реализации редуктора пользователя.
Хороший вопрос Крис, сообщение обновлено спасибо.
0

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

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

Похожие вопросы