一些Map在运行hadoop作业时会丢失用户定义的计数器

uxhixvfz  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(398)

我有一个hadoop工作,自己定义了几个计数器。当我运行这个作业(number of map>500)时,我发现一些map任务丢失了用户定义的计数器,但是hadoop内置的计数器(比如map input records)工作正常。这个问题在某个数据节点上随机发生。这令人困惑。那么问题是什么呢?

zwghvu4y

zwghvu4y1#

用try catch块 Package map()方法逻辑,并在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 

}

行处理可能抛出异常,从而绕过增量逻辑。

相关问题