コードで未処理の例外が発生した場合、すべてのhadoopジョブを自動的に強制終了します。それを行うためのベストプラクティスは何ですか?
ありがとう
バージョンに応じて、以下を実行します。
バージョン<2.3.
Hadoopジョブを強制終了します。
hadoop job -kill $jobId
すべてのjobIdの実行のリストを取得できます。
hadoop job -list
バージョン> = 2.3.
Hadoopジョブを強制終了します。
yarn application -kill $ApplicationId
すべてのApplicationIdの実行のリストを取得できます。
yarn application -list
次のコマンドの使用は非推奨です
hadoop job -list
hadoop job -kill $jobId
使用を検討する
mapred job -list
mapred job -kill $jobId
list
を実行してすべてのジョブを表示し、適切なコマンドでjobID/applicationIDを使用します。
マップされたジョブを強制終了します。
mapred job -list
mapred job -kill <jobId>
糸の仕事を殺す:
yarn application -list
yarn application -kill <ApplicationId>
未処理の例外は(特定のデータノードからの読み取りエラーではなく、不良データのように再現可能であると仮定して)最終的にジョブを失敗させます。
次のプロパティを使用して、ジョブ全体が失敗する前に特定のマップまたは削減タスクが失敗する最大回数を構成できます。
mapred.map.max.attempts
-マップタスクごとの最大試行回数。言い換えると、フレームワークは、マップタスクをあきらめる前に何度も実行しようとします。mapred.reduce.max.attempts
-上記と同じですが、タスクを削減します最初の失敗でジョブを失敗させたい場合は、この値をデフォルトの4から1に設定します。
プロセスIDを強制的に強制終了するだけで、hadoopジョブも自動的に強制終了されます。次のコマンドを使用します。
kill -9 <process_id>
例:プロセスID番号:4040 namenode
username@hostname:~$ kill -9 4040