私は Hadoop の仕事をしており、自分でいくつかのカウンターを定義しています。このジョブ (マップの数 > 500) を実行しているときに、一部のマップ タスクでユーザー定義のカウンターが失われていることがわかりましたが、Hadoop 組み込みカウンター (マップ入力レコードなど) は正常に動作します。この問題は、一部の DataNode でランダムに発生します。それは紛らわしい。それで、問題は何ですか?
1 に答える
0
map()メソッドロジックをtry-catchブロックでラップし、catchブロックで、例外メッセージにちなんで名付けられた別のカウンターをインクリメントします。
@Override
public void map(ByteBuffer key,SortedMap<ByteBuffer, IColumn> value, Context context)
throws IOException, InterruptedException {
try {
// Map logic goes here.
context.getCounter("Custom","Counter").increment(1);
} catch (Exception e) {
context.getCounter("Exception",e.getMessage()).increment(1);
}
// End map logic
}
行処理が例外をスローし、増分ロジックをバイパスする可能性があります。
于 2012-11-27T23:43:54.007 に答える