我无法理解课堂上runOldMapper(...)
和runNewMapper(...)
方法之间的区别MapTask
。Hadoop根据"useNewApi"
来自的参数决定JobConf
;但是在框架中何时何地设置了这个参数?我认为所有作业的默认值都是 FALSE。我们可以通过调用JobConf.setUseNewMapper(boolean flag)
which sets将值设置为 TRUE "mapred.mapper.new-api"
,但是我们应该在什么时候以及为什么决定设置这个参数呢?
问问题
1599 次
1 回答
3
假设此行为是由mapred.mapper.new-api
配置触发的,您是正确的。
根据您使用的是新作业还是旧作业 conf/client,请在源代码中查找:
org.apache.hadoop.mapreduce.Job.submit()
方法,它调用setUseNewAPI()
私有方法。这new-api
取决于是否设置了旧的映射器/减速器类属性来配置属性org.apache.hadoop.mapred.JobConf
- 正如您在问题中指出的那样,setUseNewMapper(true)
如果您使用新的 API 映射器实现,则开发人员将需要调用该方法(默认情况下为 false,并且您的映射器类实现了 mapred.Mapper 接口,或者如果您的映射器扩展了 mapreduce,则为 true。映射器类)
于 2012-12-01T14:11:57.747 回答