3

32 個のスポット インスタンスで Hadoop 0.20 を使用してジョブを実行しています。エラーなしで 9 時間実行されています。その間、3800 のタスクを処理しましたが、スタックしているように見えるタスクが 2 つだけで、数時間単独で実行されていることに気付きました (タイムアウトしないため応答しているようです)。通常、タスクに 15 分以上かかることはありません。多額の費用がかかるため、すでに完了したすべての作業を失いたくありません。私は本当にこれら 2 つのタスクを強制終了し、Hadoop にそれらを再割り当てするか、単に失敗としてカウントするようにしたいと考えています。それらが停止するまで、他の 3798 マップからの削減結果を取得できません!

しかし、私はそれを行う方法を理解できません。どのインスタンスがタスクを実行しているかを把握し、それらのインスタンスを終了することを検討しましたが、

  1. どのインスタンスが原因であるかを特定する方法がわかりません
  2. 思わぬ影響が出る恐れがあります。

個々のマップ タスクを強制終了するにはどうすればよいですか?

4

2 に答える 2

7

通常、Hadoop クラスターでは、次のコマンドを発行して特定のタスクを強制終了できます。

hadoop job -kill-task [attempt_id]

これにより、指定されたマップ タスクが強制終了され、新しい ID を持つ別のノードに再送信されます。

問題のマップ タスクへのナビゲートを取得するには、それをクリックして ID をメモします (例: attempts_201210111830_0012_m_000000_0 attemp_id) 。Jobtrackerweb UI

于 2012-10-13T20:09:21.440 に答える
1

Lorand が述べたようにマスター ノードに ssh し、次を実行します。

bin/hadoop job -list
bin/hadoop job –kill <JobID>
于 2015-10-16T09:32:15.670 に答える