8

我注意到有两组 Hadoop 配置参数:一组使用 mapred.*,另一组使用 mapreduce。. 我猜这些可能是由于旧 API 与新 API 的关系,但如果我没记错的话,这些似乎在新 API 中并存。我对么?如果是这样,是否有一个通用的声明用于 mapred。mapreduce.* 是什么?

4

3 回答 3

3

检查 0.20.2 的源代码,只有几个mapreduce.*属性,它们围绕配置作业输入/输出格式、映射器/组合器/reducer 和分区器类(它们还向作业客户端发出正在使用新 API 的信号由用户 - 查看源代码o.a.h.mapreduce.JobsetUseNewAPI()方法)

  • mapreduce.inputformat.class
  • mapreduce.outputformat.class
  • mapreduce.partitioner.class
  • mapreduce.map.class
  • mapreduce.combine.class
  • mapreduce.reduce.class

还有一些属性,但它们是辅助配置

输入和输出格式,无论是新的还是旧的 API 版本,通常使用mapred.*属性

例如,您的地图信号会减少您使用的输入路径mapred.input.dir(无论您使用的是新 API 还是旧 API)。与输出属性相同mapred.output.dir

所以 if 的长短是,如果没有实用方法来配置属性(FileInputFormat.setInputPaths(Job, String)),那么您需要检查源

于 2012-06-11T20:44:54.647 回答
2

是的,mapred 库已被弃用。mapreduce 库是 hadoop 0.20.1 中的新库。

但是,您仍然可以使用 mapred 提供的某些功能,这就是您仍然可以在目录中找到它的原因。

请查看此链接以了解您仍然可以使用哪些功能:http: //hadoop.apache.org/common/docs/r0.20.0/api/org/apache/hadoop/mapred/package-summary.html

于 2012-06-11T22:03:04.883 回答
1

hadoop.mapred已被弃用。

0.20.1使用前的版本mapred。之后的版本使用mapreduce.

我不认为它们并存。

于 2012-06-11T20:00:20.650 回答