2012-04-15 14 views
11
[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% 

Wcześniej skonfigurować Hadoop na jednym węźle przy użyciu tej instrukcji (http://www.michael-noll.com/tutorials/running-hadoop-on -ubuntu-linux-single-node-cluster/# run-the-mapreduce-job) i próbuję uruchomić dostarczony przykład, ale utknąłem na mapie 100% redukcji 0%. Co może być przyczyną tego?Hadoop WordCount przykład zatrzymany na mapie 100% zmniejszenia 0%

+0

jeśli śledziłeś poradnik dla michael, myślę, że zainstalowałeś hadoop w/usr/local/hadoop. Tylko w tym katalogu znajdź tasktracker.log i inne pliki dziennika. Sprawdź, czy są jakieś błędy i opublikuj je tutaj –

+0

może to pomóc http://stackoverflow.com/questions/32511280/hadoop-1-2-1-multinode-cluster-reducer-phase-hangs-for-wordcount-program/ 32551259 # 32551259 –

Odpowiedz

4

Może być wiele przyczyn powodujących ten problem, najbardziej prawdopodobne jest to, że jeden masz błąd w swoim odwzorowującym (wyjątek, nieskończonej pętli, ...)

debugowania:

  • Zaloguj się na localhost: 50030, powinieneś zobaczyć listę twoich zadań. Zlokalizuj swoje zadanie, które się nie powiodło (twój identyfikator to job_201204151241_0010) i spójrz na ślad (nie zapomnij kliknąć "Wszystkie", bo inaczej nie zobaczysz pełnego dziennika).
  • Spójrz na dysk logów, powinny one być pod/usr/lib/hadoop/logs lub coś podobnego (będziesz musiał odwołać się do konfiguracji, aby dowiedzieć się), i grep dla komunikatów o błędach cat /path/to/logs/*.log | grep ERROR i sprawdzić, czy to zwraca coś.

Jeśli nic nie wyjdzie, radzę umieścić komunikaty logowania w swoim programie odwzorowującym, aby ręcznie przeprowadzać debugowanie w każdym kroku, co się dzieje (zakładając, że działa on w trybie pseudo-distirbuted).

Daj mi znać, jak to działa.

EDIT: Jak zauważył Chris, reduktor ma wartość 0%, więc problem leży w rzeczywistości przed krokiem zmniejszania.

+2

jeśli reduktor jest na poziomie 0%, reduktor jeszcze nie wszedł w fazę zmniejszania (nadal czeka na skopiowanie danych), więc nie jest to błąd w implementacji reduktora użytkownika –

+0

dobry punkt Chris, po aktualizacji dzięki. –

13

Po pierwsze, otwórz swój program do śledzenia zadań i spójrz na liczbę wolnych gniazd reduktora i innych uruchomionych zadań - czy jest uruchomiona inna praca, która zużywa wszystkie wolne gniazda reduktorów, gdy staną się dostępne.

Po sprawdzeniu, że dostępne są wolne gniazda reduktorów, aby uruchomić reduktor do swojej pracy, znajdź swoją pracę w aplikacji do śledzenia zadań i kliknij ją, aby ją otworzyć. Powinieneś być teraz w stanie zobaczyć liczbę gotowych maperów - upewnij się, że to oznacza, że ​​nie masz uruchomionych map mappers. % Complete na konsoli czasami kłamie i możesz mieć mappera, który jest w trakcie popełniania, mówiąc, że jest w 100%, ale ma problem z finalizacją.

Po upewnieniu się, że wszyscy mapperzy skończyli, spójrz na liczbę uruchomionych reduktorów - czy to pokazuje 0? Jeśli nie, to pokazuje, że niektóre z nich działają - kliknij liczbę uruchomionych reduktorów, aby wyświetlić stronę reduktorów, teraz kliknij instancję, aż uzyskasz opcję przeglądania dzienników dla reduktora. Będziesz chciał przejrzeć wszystkie dzienniki tego reduktora (nie pierwszy/ostatni 100k). To powinno ci powiedzieć, co faktycznie robi twój reduktor - najprawdopodobniej próbując skopiować wyniki od maperów do węzła reduktora. Wyobrażam sobie, że to jest twój problem, jedna z sieci lub miejsca na dysku, ale tak czy inaczej, lastoop powinien zawieść instancję reduktora i przełożyć go na inny węzeł.

+2

Świetne wskazówki. Postępowałem zgodnie z tymi wskazówkami i odkryłem, że moim problemem jest Zapora systemu Windows, która nie zezwala na przesyłanie pliku z węzłów, w których menedżerowie uruchomili się do węzłów, w których reduktor próbował działać (mimo że to była ta sama maszyna fizyczna). – jhatcher9999

+0

Dzięki za informację o przyczynie. Miałem takie same 100% Map/0% Reduce problem i stwierdziłem, że było to spowodowane tym, że byłem na połączeniu SecureVPN. – lcn

4

Również napotkałem ten problem na komputerze z zainstalowanym systemem Suse 11. Jak wspomina Chris powyżej, problem dotyczy programu odwzorowującego. Aby rozwiązać problem, edytowałem plik/etc/hosts i usunąłem adres IP hosta. Na przykład w pliku/etc/hosts

Ip.address.of.your.host  hostname 

Zmiana

127.0.0.1     hostname 

Raz zrobiłem zmiana powyżej, i ponownie, udało mi się uruchomić program WordCount

2

widzę ten sam problem, który uruchamia pseudoklaster na komputerze Mac 10.7.4. Zdarza się, gdy budzę się z trybu uśpienia. Wygląda na to, że adres IP mapper został przekształcony na wake-up:

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 

Więc po przebudzeniu-up z trybu uśpienia, ponowne uruchomienie Hadoop poprzez stop-all.sh i start-all.sh poprawek tego zagadnienia mnie.

0

Miałem podobny problem (nie to samo). Moje zadania utknęły przy 100% Map i 16% Reduce. Miałem do czynienia z tym problemem przez kilka godzin (dla różnych programów: grep, wordcount itd.), Dopóki nie natknąłem się na ten wątek i nie spojrzałem na odpowiedź Chrisa - co zasadniczo sugeruje dobry sposób na debugowanie lub wskazanie problemu, z którym się boryka. (Wygląda na to, że nie mam reputacji, aby głosować za jego odpowiedzią, stąd ten post).

Po przeanalizowaniu interfejsu użytkownika do śledzenia zadań i przejściu do pliku dziennika wątku dokładnego zadania (nie wiedziałem, że ten dziennik istnieje), odkryłem, że mój JobTracker nie był w stanie rozwiązać nazwy hosta datanodu. Dodałem parę (ip, hostname) do mojego pliku hosts, a zadanie, które utknęło, wróciło żywe i zakończyło się pomyślnie.

0

Miałem do czynienia z podobnym problemem, problem polegał na tym, że nie ma miejsca na zadanie reduktora. Więc zwolniłem pamięć. Najlepsze jest też spojrzenie na logi jobtracker: 50030/logs/hadoop-hadoop-jobtracker-localhost.localdomain.log. Komunikat w logu: "WARN org.apache.hadoop.mapred.JobInProgress: Brak miejsca na zadanie zredukowania Węzeł tracker_localhost.localdomain: localhost.localdomain/127.0.0.1: 57829 ma 778543104 bajtów za darmo, ale spodziewamy się zmniejszenia wejścia do pobrania 1160706716 "

1

Możliwe, że znalazłem inny powód problemu" map 100% reduce 0% ".

Moje zadanie mapy generuje ogromną ilość rekordów i uruchamiam Mule w środowisku pseudoklastrowym.

Sprawdziłem dziennik zadań mapy i wydaje się, że czas pomiędzy mapą 100% a początkiem redukcji jest wydawany na scalanie segmentów pośrednich.

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 

Ta procedura może zająć dużo czasu w zależności od rozmiaru i liczby segmentów oraz prędkości odczytu/zapisu dysku.

Oprócz dziennika można stwierdzić, że tak się dzieje, sprawdzając wykorzystanie dysku na komputerze, które będzie stałe, ponieważ wiele danych jest łączonych w nowe pliki. Zauważyłem nawet, że segmenty są usuwane po scaleniu, ponieważ wykorzystanie dysku ulega wahaniom, wzrastając podczas scalania i zmniejszania podczas usuwania.

1

Wystąpił również ten problem.Ale mam edytować plik etc/hosts tak:

Ip.address.of.your.host  hostname 

Wystarczy dodać jeden wiersz poniżej powyżej jednego jak postępować

127.0.1.1  hostname 

Należy zauważyć, że jest to 127.0.1.1 (zamiast 127.0.0.1), albo można napotkać problem, po tym jak "Połącz z gospodarzem some_hostname portu 22: Connection timed out"

1

jeśli you'r używać Linuksa i you'r użyciu pojedynczego węzła Hadoop: przejść do katalogu/etc/gospodarze zmienić swoje adresy IP z tego formatu

mistrz Twój adres-IP-niewolnik Twój adres-IP-

do/Hadoop/katalogu conf open masters i rodzaj localhost w tym (usunąć wszystkie inne adresy !) otwórz niewolników i ustaw localhost w tym (usuń wszystkie inne adresy!)

teraz, uruchom ponownie swój program, powinien działać poprawnie.

Powiązane problemy