我忘记了要调用的API /方法,但我的问题是:
我的映射器将运行超过10分钟 - 我不想增加默认超时。
相反,我想让我的映射器向任务跟踪器发送更新ping,当它位于消耗时间>的特定代码路径中时。 10分钟。
请告诉我要调用的API /方法。
答案 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来报告进度或 只是表明他们还活着。 在应用程序的场景中 处理个人密钥/值需要花费很少的时间 对,这是至关重要的,因为框架可能会假定任务 已超时并终止该任务。