web-dev-qa-db-ja.com

Hiveとは:org.Apache.hadoop.Hive.ql.exec.MapRedTaskからの戻りコード2

私は得ています:

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

Hiveコンソールのコマンドを使用して、パーティションテーブルのコピーを作成しようとしているとき:

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

最初にいくつかのセマンティック分析エラーが発生し、設定する必要がありました。

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

上記のプロパティが何をするのかわかりませんが?

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

それは本当のエラーではありません、ここでそれを見つける方法です:

Hadoop jobtracker Webダッシュボードに移動して、失敗したHive mapreduceジョブを見つけ、失敗したタスクのログを調べます。 realエラーが表示されます。

コンソール出力エラーは役に立たない、主に個々のジョブ/タスクのビューが実際のエラーをプルしないため(複数のタスクでエラーが発生する可能性があるため)

お役に立てば幸いです。

101

私はこのスレッドで3年遅れていることを知っていますが、今後も同様の場合に2セントを提供します。

私は最近、クラスターで同じ問題/エラーに直面しました。 JOBは常に約80%以上の削減になり、同じエラーで失敗し、実行ログにも何も表示されません。複数回の反復と調査の結果、ロードされた多数のファイルの一部が、ベーステーブル(パーティションテーブルにデータを挿入するために使用されているテーブル)に提供された構造に準拠していないことがわかりました。

ここで注意すべき点は、パーティション列の特定の値に対して選択クエリを実行するか、静的レコードを作成したときはいつでも、エラーレコードがスキップされたように正常に機能することです。

TL; DR:HiveがSchema-On-Readの哲学に従っているため、着信データ/ファイルの構造化の不整合をチェックします。

14
user3032283

HDInsightでhadoop jobtracker Webダッシュボード(AzureのHadoop)を見つけるのに時間がかかったため、ここにいくつかの情報を追加しました。 「Hadoop Yarn Status」というヘッドノードにショートカットがあります。これは、ローカルhttpページへの単なるリンクです( http:// headnodehost:9014/cluster )。ダッシュボードを開くと、次のようになりました。

enter image description here

そのダッシュボードでは、失敗したアプリケーションを見つけることができ、クリックすると、個々のマップのログを確認してジョブを削減できます。

私の場合、すでに設定でメモリをクランクしていましたが、リデューサーのメモリがstill不足しているようです。何らかの理由で、以前に取得した「Java outofmemory」エラーが表示されませんでした。

2
Mike Wise

一番の答えは正しいです。エラーコードではあまり情報が得られません。このエラーコードについてチームで見た一般的な原因の1つは、クエリが適切に最適化されなかった場合です。既知の理由は、右側のテーブルよりも大きい左側のテーブルマグニチュードで内部結合を行う場合です。通常、これらのテーブルを交換すると、このような場合にうまくいくでしょう。

私も同じ問題に直面しました-ダッシュボードで確認すると、次のエラーが見つかりました。 Flumeを介してデータが送られてきたため、いくつかのファイルで矛盾が発生した可能性があるため、途中で中断しました。

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

動作するファイルの数を減らして実行しました。私の場合、フォーマットの一貫性が理由でした。

0
Dipika Baad

S3のEMR出力パスから_SUCCESSファイルを削除しましたが、正常に機能しました。

0
Sindhu Patil