1

私は Hadoop の仕事をしており、自分でいくつかのカウンターを定義しています。このジョブ (マップの数 > 500) を実行しているときに、一部のマップ タスクでユーザー定義のカウンターが失われていることがわかりましたが、Hadoop 組み込みカウンター (マップ入力レコードなど) は正常に動作します。この問題は、一部の DataNode でランダムに発生します。それは紛らわしい。それで、問題は何ですか?

4

1 に答える 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 に答える