Co to jest Hive: zwrot kodu 2 z org.Apacz.hadoop.hive.ql.exec.MapRedTask

Otrzymuję:

FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask

Podczas próby zrobienia kopii podzielonej na partycje tabeli przy użyciu poleceń w konsoli hive:

CREATE TABLE copy_table_name LIKE table_name;
INSERT OVERWRITE TABLE copy_table_name PARTITION(day) SELECT * FROM table_name;

Początkowo dostałem kilka błędów analizy semantycznej i musiałem ustawić:

set hive.exec.dynamic.partition=true
set hive.exec.dynamic.partition.mode=nonstrict

Chociaż nie jestem pewien, co powyższe właściwości zrobić?

PEŁNA WERSJA z konsoli hive:

Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks determined at compile time: 1
In order to change the average load for a reducer (in bytes):
  set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
  set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
  set mapred.reduce.tasks=<number>
Starting Job = job_201206191101_4557, Tracking URL = http://jobtracker:50030/jobdetails.jsp?jobid=job_201206191101_4557
Kill Command = /usr/lib/hadoop/bin/hadoop job  -Dmapred.job.tracker=master:8021 -kill job_201206191101_4557
2012-06-25 09:53:05,826 Stage-1 map = 0%,  reduce = 0%
2012-06-25 09:53:53,044 Stage-1 map = 100%,  reduce = 100%
Ended Job = job_201206191101_4557 with errors
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask
Author: gyan, 2012-06-25

7 answers

To nie jest prawdziwy błąd, oto jak go znaleźć:

Przejdź do hadoop jobtracker web-dashboard, znajdź hive mapreduce zadania, które się nie powiodły i spójrz na dzienniki nieudanych zadań. To pokaże ci prawdziwy błąd.

Błędy wyjściowe konsoli są bezużyteczne, głównie dlatego, że nie ma widoku poszczególnych zadań/zadań, aby wyciągnąć prawdziwe błędy (mogą być błędy w wielu zadaniach)

Mam nadzieję, że to pomoże.

 87
Author: Matthew Rathbone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-28 16:07:18

Wiem, że spóźnię się 3 lata na ten wątek, jednak nadal dostarczam swoje 2 grosze za podobne przypadki w przyszłości.

Ostatnio napotkałem ten sam problem/błąd w moim klastrze. Zadanie zawsze osiągnęłoby jakieś 80%+ redukcję i nie powiodło się z tym samym błędem, z niczym w dziennikach wykonania. Po wielu iteracjach i badaniach odkryłem, że wśród mnóstwa plików ładowanych niektóre były niezgodne ze strukturą przewidzianą dla tabeli bazowej(tabela używana do wstawiania danych do podzielonej tabeli).

Należy zauważyć, że za każdym razem, gdy wykonałem zapytanie select dla określonej wartości w kolumnie partycjonowanie lub utworzyłem partycję statyczną, działało to dobrze, ponieważ w tym przypadku rekordy błędów były pomijane.

TL; DR: Sprawdź przychodzące dane / Pliki pod kątem niespójności w strukturyzacji jako HIVE zgodnie z filozofią Schema-On-Read.

 13
Author: user3032283,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-07 19:14:08

Dodawanie informacji tutaj, ponieważ zajęło mi trochę czasu, aby znaleźć hadoop jobtracker web-dashboard w HDInsight (Azure Hadoop), a kolega w końcu pokazał mi, gdzie to jest. Na węźle głównym znajduje się skrót o nazwie "Hadoop Yarn Status", który jest tylko linkiem do lokalnej strony http ( http://headnodehost:9014/cluster w moim przypadku). Po otwarciu deska rozdzielcza wyglądała tak:

Tutaj wpisz opis obrazka

W tym pulpicie można znaleźć nieudaną aplikację, a następnie po klikając w nią, możesz przejrzeć dzienniki poszczególnych map i zredukować zadania.

W moim przypadku wydawało się, że nadal kończy się pamięć w reduktorach, mimo że już podkręciłem pamięć w konfiguracji. Z jakiegoś powodu nie ujawniało błędów "java outofmemory", które dostałem wcześniej.

 2
Author: Mike Wise,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-09 08:56:17

Usunąłem plik _SUCCESS ze ścieżki wyjściowej EMR w S3 i działał dobrze.

 0
Author: Sindhu Patil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-10 10:55:05

Nawet napotkałem ten sam problem - po sprawdzeniu na desce rozdzielczej znalazłem następujący błąd. Ponieważ dane przechodziły przez Flume i przerwały się między nimi, z powodu czego mogła istnieć niespójność w kilku plikach.

Caused by: org.apache.hadoop.hive.serde2.SerDeException: org.codehaus.jackson.JsonParseException: Unexpected end-of-input within/between OBJECT entries

Uruchamianie na mniejszej liczbie plików działało. Konsekwencja formatu była powodem w moim przypadku.

 0
Author: Dipika Baad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-15 08:36:08

Miałem również ten sam błąd, gdy wstawiałem dane do zewnętrznej tabeli HIVE, która wskazywała na Elastic search cluster.

Zastąpiłem starszy słoik elasticsearch-hadoop-2.0.0.RC1.jar Na elasticsearch-hadoop-5.6.0.jar i wszystko działało dobrze.

Moja sugestia brzmi: Proszę użyć określonego słoika zgodnie z elastyczną wersją wyszukiwania. Nie używaj starszych słoików, jeśli używasz nowszej wersji elastic search.

Thanks to this post Hive-Elasticsearch Write Operation #409

 0
Author: Aniket Kulkarni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-15 08:43:17

Najlepsza odpowiedź jest dobra, że kod błędu nie daje wiele informacji. Jedną z najczęstszych przyczyn, które widzieliśmy w naszym zespole dla tego kodu błędu, było to, gdy zapytanie nie było dobrze zoptymalizowane. Znanym powodem było, gdy robimy połączenie wewnętrzne z lewej stronie tabeli wielkości większe niż stół po prawej stronie. Wymiana tych tabel zwykle zrobić trik w takich przypadkach.

 -1
Author: Dileep Kumar Patchigolla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-14 06:58:26