hadoop如何决定在maptask类中运行哪个mapper,oldmapper还是newmapper?

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

我无法理解 runOldMapper(...) 以及 runNewMapper(...) 中的方法 MapTask 班级。hadoop基于 "useNewApi" 参数来自 JobConf ; 但是,在框架中何时何地设置了此参数?我认为所有作业的默认值都是false。我们可以通过调用 JobConf.setUseNewMapper(boolean flag) 哪一套 "mapred.mapper.new-api" ,但是何时以及为什么我们应该决定设置这个参数?

flvlnr44

flvlnr441#

你的假设是正确的,这种行为是由 mapred.mapper.new-api 配置。
根据您使用的是新的还是旧的job conf/client,请在源代码中查找: org.apache.hadoop.mapreduce.Job.submit() 方法,该方法调用 setUseNewAPI() 私有方法。这将配置 new-api 属性,这取决于是否设置了旧的Map器/还原器类属性 org.apache.hadoop.mapred.JobConf -正如您在问题中所指出的,您开发人员将需要调用 setUseNewMapper(true) 方法(默认情况下为false,Map器类实现mapred.mapper接口;如果Map器扩展mapreduce.mapper类,则为true)

相关问题