私は得ています:
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
それは本当のエラーではありません、ここでそれを見つける方法です:
Hadoop jobtracker Webダッシュボードに移動して、失敗したHive mapreduceジョブを見つけ、失敗したタスクのログを調べます。 realエラーが表示されます。
コンソール出力エラーは役に立たない、主に個々のジョブ/タスクのビューが実際のエラーをプルしないため(複数のタスクでエラーが発生する可能性があるため)
お役に立てば幸いです。
私はこのスレッドで3年遅れていることを知っていますが、今後も同様の場合に2セントを提供します。
私は最近、クラスターで同じ問題/エラーに直面しました。 JOBは常に約80%以上の削減になり、同じエラーで失敗し、実行ログにも何も表示されません。複数回の反復と調査の結果、ロードされた多数のファイルの一部が、ベーステーブル(パーティションテーブルにデータを挿入するために使用されているテーブル)に提供された構造に準拠していないことがわかりました。
ここで注意すべき点は、パーティション列の特定の値に対して選択クエリを実行するか、静的レコードを作成したときはいつでも、エラーレコードがスキップされたように正常に機能することです。
TL; DR:HiveがSchema-On-Readの哲学に従っているため、着信データ/ファイルの構造化の不整合をチェックします。
HDInsightでhadoop jobtracker Webダッシュボード(AzureのHadoop)を見つけるのに時間がかかったため、ここにいくつかの情報を追加しました。 「Hadoop Yarn Status」というヘッドノードにショートカットがあります。これは、ローカルhttpページへの単なるリンクです( http:// headnodehost:9014/cluster )。ダッシュボードを開くと、次のようになりました。
そのダッシュボードでは、失敗したアプリケーションを見つけることができ、クリックすると、個々のマップのログを確認してジョブを削減できます。
私の場合、すでに設定でメモリをクランクしていましたが、リデューサーのメモリがstill不足しているようです。何らかの理由で、以前に取得した「Java outofmemory」エラーが表示されませんでした。
一番の答えは正しいです。エラーコードではあまり情報が得られません。このエラーコードについてチームで見た一般的な原因の1つは、クエリが適切に最適化されなかった場合です。既知の理由は、右側のテーブルよりも大きい左側のテーブルマグニチュードで内部結合を行う場合です。通常、これらのテーブルを交換すると、このような場合にうまくいくでしょう。
私も同じ問題に直面しました-ダッシュボードで確認すると、次のエラーが見つかりました。 Flumeを介してデータが送られてきたため、いくつかのファイルで矛盾が発生した可能性があるため、途中で中断しました。
Caused by: org.Apache.hadoop.Hive.serde2.SerDeException: org.codehaus.jackson.JsonParseException: Unexpected end-of-input within/between OBJECT entries
動作するファイルの数を減らして実行しました。私の場合、フォーマットの一貫性が理由でした。
S3のEMR出力パスから_SUCCESSファイルを削除しましたが、正常に機能しました。