如何更新任务跟踪器我的映射器仍然正常运行而不是生成超时?

时间:2012-08-05 06:34:21

标签: hadoop mapreduce

我忘记了要调用的API /方法,但我的问题是:

我的映射器将运行超过10分钟 - 我不想增加默认超时。

相反,我想让我的映射器向任务跟踪器发送更新ping,当它位于消耗时间>的特定代码路径中时。 10分钟。

请告诉我要调用的API /方法。

2 个答案:

答案 0 :(得分:6)

您只需增加一个计数器并拨打progress即可。这将确保任务将心跳发送回任务跟踪器以了解其是否存活。

在新API中,这是通过上下文进行管理的,请参见此处:http://hadoop.apache.org/common/docs/r1.0.0/api/index.html

e.G。

@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

答案 1 :(得分:1)

您通常使用Reporter让框架知道您还活着。

来自javadoc的引用:

  

Mapper和Reducer可以使用提供的Reporter来报告进度或   只是表明他们还活着。 在应用程序的场景中   处理个人密钥/值需要花费很少的时间   对,这是至关重要的,因为框架可能会假定任务   已超时并终止该任务。