2012-02-29 14 views
6

に殺さ私は次のエラーを取得する:珍しいHadoopのエラー - 私は私のHadoopジョブを実行すると、タスクが自分自身

リクエストは、タスクがユーザー

によってKILLED_UNCLEANされたユーザー によってタスク「attempt_201202230353_23186_r_000004_0」を殺すために受け取りました

ログはきれいであるように見えます。私は28の減速材を使いますが、これはすべての減速材にとって起こりません。それは選択された少数のために起こり、減速器は再び始まる。私はこれを理解していない。私が気付いたことは、小さなデータセットの場合、このエラーはほとんど見られません!

+0

この問題によりジョブが失敗していますか?投機的な実行を有効にして実行していますか? –

+0

はい、投機的実行がtrueに設定されています。仕事は失敗しません、それは最終的に仕事の完了時間を全体的に増加させるキルティング/失敗したレデューサーの多くで終わります! – RFT

+0

@Pradeep Gollakotaまた、一度殺されたり失敗したりしたレデューサーは、成功するまで8-9回殺され続けるが、一度でも殺されないレデューサーは仕事を通して清潔であることがわかった! – RFT

答えて

1

reduceロジックでcounter(hadoopカウンタ)を使用できますか?あなたのreduceプログラムが実行中であるか、ハングしているかを、hadoopが判断できないようです。あなたのロジックがまだ実行中であっても、数分間待ち、それを殺します。しようとするには、3つの事柄があります

4

:Hadoopのが進んジョブのカウンタを見れば

カウンター
を設定するには、それは(Arockiaraj Durairajの回答を参照してください。)それを殺さないだろうこれは、ほとんどのようですそれは長い目で見ている仕事へのより多くの洞察を可能にし、ハングアップがあるかもしれないので、エレガントです。

長いタスクタイムアウト
デフォルトでは、10分後にHadoopジョブがタイムアウトします。タイムアウトを変更することはやや強引ですが、うまくいく可能性があります。一般的に5MBのファイル(曲)であるが、50MBのファイルがいくつかある(アルバム全体)というオーディオファイルの解析を想像してみてください。 Hadoopはブロックごとに個別のファイルを格納します。したがって、HDFSのブロックサイズが64MBの場合、5MBファイルと50MBファイルの両方で1ブロック(64MB)が必要になります(http://blog.cloudera.com/blog/2009/02/the-small-files-problem/、ここではSmall files and HDFS blocksを参照)。ただし、5MBのジョブは50MBのジョブより速く実行されます。タスクのタイムアウトは、この類似した質問への回答ごとに仕事のためのコード(mapred.task.timeout)に増加させることができる:タスクはプラディープを見る(4つのデフォルトの試みよりも多くを作るために
設定のHadoopを試みHow to fix "Task attempt_201104251139_0295_r_000006_0 failed to report status for 600 seconds."

増加ゴラコタの答え)。これは、3つの中でもっともブルートフォースの方法です。 Hadoopはこのジョブをより多く試行しますが、大きな問題(小さなサーバーや大きなデータブロックなど)を隠蔽する可能性があります。

関連する問題