it-swarm.com.de

Was ist Hive: Rückgabecode 2 von org.Apache.hadoop.Hive.ql.exec.MapRedTask

Ich bekomme:

FAILED: Execution Error, return code 2 from org.Apache.hadoop.Hive.ql.exec.MapRedTask

Beim Versuch, eine Kopie einer partitionierten Tabelle mit den Befehlen in der Hive-Konsole zu erstellen:

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

Ich bekam zunächst einige semantische Analysefehler und musste einstellen:

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

Obwohl ich nicht sicher bin, was die oben genannten Eigenschaften tun? 

Volle Ausgabe von Hive-Konsole:

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
46
nickponline

Das ist nicht der wirkliche Fehler. So finden Sie ihn:

Gehen Sie zum Web-Dashboard von hadoop jobtracker, suchen Sie die fehlgeschlagenen Hive-Map-Reduzierungsjobs und sehen Sie sich die Protokolle der fehlgeschlagenen Aufgaben an. Das zeigt Ihnen den real Fehler. 

Die Ausgabefehler der Konsole sind unbrauchbar, da sie nicht die einzelnen Jobs/Aufgaben anzeigen können, um die tatsächlichen Fehler abzurufen (es könnten Fehler in mehreren Aufgaben auftreten).

Hoffentlich hilft das.

91

Ich weiß, dass ich drei Jahre zu spät in diesem Thread bin, aber meine 2 Cents für ähnliche Fälle in der Zukunft immer noch zur Verfügung stellt.

Ich habe kürzlich das gleiche Problem/Fehler in meinem Cluster erlebt. Der Job wurde immer um 80% + reduziert und schlug mit dem gleichen Fehler fehl, wobei in den Ausführungsprotokollen nichts weiter vorkam. Bei mehreren Iterationen Nach Recherchen fand ich heraus, dass einige der geladenen Dateien nicht mit der für die Basistabelle bereitgestellten Struktur übereinstimmen (Tabelle, in der Daten in partitionierte Tabellen eingefügt werden). 

Zu beachten ist hier immer, wenn ich eine Auswahlabfrage für einen bestimmten Wert in der Partitionierungsspalte ausführte oder eine statische Partition erstellte.

TL; DR: Überprüfen Sie die eingehenden Daten/Dateien auf Inkonsistenzen bei der Strukturierung, da Hive der Schema-On-Read-Philosophie folgt.

13
user3032283

Ich habe hier einige Informationen hinzugefügt, da ich eine Weile brauchte, um das Hadoop Jobtracker-Web-Dashboard in HDInsight (Azures Hadoop) zu finden, und ein Kollege zeigte mir schließlich, wo es war. Es gibt eine Verknüpfung auf dem Kopfknoten namens "Hadoop Yarn Status", die lediglich eine Verknüpfung zu einer lokalen http-Seite darstellt ( http: // headnodehost: 9014/cluster in meinem Fall). Beim Öffnen sah das Dashboard folgendermaßen aus:

 enter image description here

In diesem Dashboard können Sie Ihre fehlgeschlagene Anwendung finden. Nachdem Sie darauf geklickt haben, können Sie die Protokolle der einzelnen Karten anzeigen und Aufträge reduzieren.

In meinem Fall schien es, dass noch der Speicher in den Reduzierern aufgebraucht ist, obwohl ich den Speicher bereits in der Konfiguration angekurbelt hatte. Aus irgendeinem Grund kam es nicht zu den "Java Outofmemory" -Fehlern, die ich früher bekommen habe.

2
Mike Wise

Sogar ich war mit dem gleichen Problem konfrontiert - als ich das Dashboard überprüfte, fand ich folgenden Fehler. Da die Daten durch Flume kamen und zwischendurch unterbrochen wurden, kam es bei einigen Dateien zu Inkonsistenzen.

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

Läuft mit weniger Dateien, hat es funktioniert. In meinem Fall war die Formatkonsistenz der Grund. 

0
Dipika Baad

Ich habe die _SUCCESS-Datei aus dem EMR-Ausgabepfad in S3 entfernt und es hat gut funktioniert.

0
Sindhu Patil

Die oberste Antwort ist richtig, dass der Fehlercode Ihnen nicht viele Informationen gibt. Eine der häufigsten Ursachen, die wir in unserem Team für diesen Fehlercode sahen, war, dass die Abfrage nicht optimal optimiert wurde. Ein bekannter Grund war, wenn wir eine innere Verbindung herstellen, wobei die linken Tischgrößen größer als die rechte Tabelle sind. Das Austauschen dieser Tabellen würde in solchen Fällen normalerweise ausreichen.