呼び出す API/メソッドを忘れましたが、私の問題は次のとおりです。
私のマッパーは 10 分以上実行されます - デフォルトのタイムアウトを増やしたくありません。
むしろ、10 分以上の時間を消費する特定のコード パスにある場合、マッパーが更新 ping をタスク トラッカーに送信するようにしたいと考えています。
呼び出す API/メソッドを教えてください。
単にカウンターを増やして呼び出すことができますprogress
。これにより、タスクがハートビートをタスクトラッカーに送り返し、それが生きているかどうかを確認します。
新しいAPIでは、これはコンテキストを通じて管理されます。http://hadoop.apache.org/common/docs/r1.0.0/api/index.htmlを参照してください。
例えば
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
// increment counter
context.getCounter(SOME_ENUM).increment(1);
context.progress();
}
古いAPIには、レポータークラスがあります:http: //hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/Reporter.html
通常、Reporterを使用して、自分がまだ生きていることをフレームワークに知らせます。
javadoc からの引用:
Mapper と Reducer は、提供されている Reporter を使用して、進行状況を報告したり、それらが稼働中であることを示したりできます。アプリケーションが個々のキーと値のペアを処理するのにほとんど時間がかからないシナリオでは、フレームワークがタスクがタイムアウトしたと想定してそのタスクを強制終了する可能性があるため、これは非常に重要です。