Hadoop发行版和新API

Hadoop发行版和新API,api,hadoop,mapreduce,yarn,Api,Hadoop,Mapreduce,Yarn,我对Hadoop版本和新API感到非常困惑。我有一个关于Hadoop 0.20.203的项目,我想是时候升级了。我希望使用一个有纱线的版本,它是0.23或2.0.2。根据Hadoop站点,2.0.2与0.23相似,但更好,因此我已经导入了2.0.2版。新的api应该在org.apache.hadoop.mapreduce中,而不是在org.apache.hadoop.mapred中,我已经从我的0.20版本中获得了这个包,所以我不需要做任何更改。Job类的所有构造函数都已弃用,那么我应该如何使用

我对Hadoop版本和新API感到非常困惑。我有一个关于Hadoop 0.20.203的项目,我想是时候升级了。我希望使用一个有纱线的版本,它是0.23或2.0.2。根据Hadoop站点,2.0.2与0.23相似,但更好,因此我已经导入了2.0.2版。新的api应该在org.apache.hadoop.mapreduce中,而不是在org.apache.hadoop.mapred中,我已经从我的0.20版本中获得了这个包,所以我不需要做任何更改。Job类的所有构造函数都已弃用,那么我应该如何使用这个类呢?当我运行我的项目时,我也收到了很多反对的警告,其中提到了mapred包

我编辑了我的问题,将不推荐的内容包括在我的输出中

13/02/12 00:52:57 WARN conf.Configuration: mapred.jar is deprecated. Instead, use mapreduce.job.jar
13/02/12 00:52:57 WARN conf.Configuration: mapred.cache.files is deprecated. Instead,   use mapreduce.job.cache.files
13/02/12 00:52:57 WARN conf.Configuration: mapred.reduce.tasks is deprecated. Instead, use mapreduce.job.reduces
13/02/12 00:52:57 WARN conf.Configuration: mapred.output.value.class is deprecated. Instead, use mapreduce.job.output.value.class
13/02/12 00:52:57 WARN conf.Configuration: mapred.mapoutput.value.class is deprecated. Instead, use mapreduce.map.output.value.class
13/02/12 00:52:57 WARN conf.Configuration: mapreduce.map.class is deprecated. Instead, use mapreduce.job.map.class
13/02/12 00:52:57 WARN conf.Configuration: mapred.job.name is deprecated. Instead, use mapreduce.job.name
13/02/12 00:52:57 WARN conf.Configuration: mapreduce.reduce.class is deprecated. Instead, use mapreduce.job.reduce.class
13/02/12 00:52:57 WARN conf.Configuration: mapred.input.dir is deprecated. Instead, use mapreduce.input.fileinputformat.inputdir
13/02/12 00:52:57 WARN conf.Configuration: mapred.output.dir is deprecated. Instead, use mapreduce.output.fileoutputformat.outputdir
13/02/12 00:52:57 WARN conf.Configuration: mapred.max.split.size is deprecated. Instead, use mapreduce.input.fileinputformat.split.maxsize
13/02/12 00:52:57 WARN conf.Configuration: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps
13/02/12 00:52:57 WARN conf.Configuration: mapred.cache.files.timestamps is deprecated. Instead, use mapreduce.job.cache.files.timestamps
13/02/12 00:52:57 WARN conf.Configuration: mapred.output.key.class is deprecated. Instead, use mapreduce.job.output.key.class
13/02/12 00:52:57 WARN conf.Configuration: mapred.mapoutput.key.class is deprecated. Instead, use mapreduce.map.output.key.class
13/02/12 00:52:57 WARN conf.Configuration: mapred.working.dir is deprecated. Instead, use mapreduce.job.working.dir

在20.2xx/1.x和0.21/0.22/0.23/2.x之间,w.r.t mapreduce框架发生了两个主要变化

  • 重命名了几个配置名称,以更好地反映什么是服务器端配置属性,什么是客户端配置属性。
    • 客户端配置:旧名称已弃用,这就是您看到这些警告的原因
    • 您提到了2.0.2,所以我想您正在使用新的框架。在这种情况下,所有旧的服务器端配置都不会产生任何效果
  • MapReduceAPI有两种风格——旧API(org.apache.hadoop.mapred)和新API(org.apache.hadoop.mapreduce)。这是一个有点长的历史,但目前的状态(以及未来)是旧的和新的API都受支持。
    • 旧API仍然是稳定的,并且在所有版本中都以二进制兼容的方式得到支持
    • 新API在不同版本(1.x->2.x)之间存在一些兼容性问题

您可以在此处阅读更多关于Hadoop 2中API兼容性的信息:

为什么不按照警告建议使用新API中的相应类?Praveen我没有收到任何错误,我只是对版本和API感到困惑。我想我将使用1.X.X系列,因为我不会大规模使用它。Amar我没有使用任何mapred软件包。我只使用mapreduce软件包。不知道为什么我会收到这些警告。