【问题标题】:Hadoop 2.2.0 Configuration deprecationHadoop 2.2.0 配置弃用
【发布时间】:2014-03-25 13:58:18
【问题描述】:

我设置了 Hadoop 2.2.0 集群,现在运行我的 java 客户端来处理数据。运行我的 java 程序后,我注意到输出显示如下:

13/11/18 11:44:44 INFO Configuration.deprecation: user.name is deprecated. Instead, use mapreduce.job.user.name
13/11/18 11:44:44 INFO Configuration.deprecation: mapred.jar is deprecated. Instead, use mapreduce.job.jar 
13/11/18 11:44:44 INFO Configuration.deprecation: mapred.output.value.class is deprecated. Instead, use mapreduce.job.output.value.class
13/11/18 11:44:44 INFO Configuration.deprecation: mapreduce.combine.class is deprecated. Instead, use mapreduce.job.combine.class
13/11/18 11:44:44 INFO Configuration.deprecation: mapreduce.map.class is deprecated. Instead, use mapreduce.job.map.class
13/11/18 11:44:44 INFO Configuration.deprecation: mapred.job.name is deprecated. Instead, use mapreduce.job.name
13/11/18 11:44:44 INFO Configuration.deprecation: mapred.textoutputformat.separator is deprecated. Instead, use mapreduce.output.textoutputformat.separator
13/11/18 11:44:44 INFO Configuration.deprecation: mapreduce.reduce.class is deprecated. Instead, use mapreduce.job.reduce.class 
13/11/18 11:44:44 INFO Configuration.deprecation: mapred.input.dir is deprecated. Instead, use mapreduce.input.fileinputformat.inputdir
13/11/18 11:44:44 INFO Configuration.deprecation: mapred.output.dir is deprecated. Instead, use mapreduce.output.fileoutputformat.outputdir
13/11/18 11:44:44 INFO Configuration.deprecation: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps
13/11/18 11:44:44 INFO Configuration.deprecation: mapred.output.key.class is deprecated. Instead, use mapreduce.job.output.key.class
13/11/18 11:44:44 INFO Configuration.deprecation: mapred.working.dir is deprecated. Instead, use mapreduce.job.working.dir

该模块运行良好,看起来没有任何影响。但是我怎样才能避免这个信息消息? (我导入 maven hadoop-client 2.2.0 并使用 Job job = new Job())

【问题讨论】:

    标签: java hadoop


    【解决方案1】:

    在 Hadoop 2.3 中已修复,请参考:https://issues.apache.org/jira/browse/HADOOP-10178

    【讨论】:

      【解决方案2】:

      大部分是因为 Hadoop API 更改 - 所有“mapred”包都移至“mapreduce”。您可以将“org.apache.hadoop.mapred”的导入位置更改为“org.apache.hadoop.mapreduce”以避免此类信息。您可以对其他一些消息进行类似的更改,例如

      13/11/18 11:44:44 INFO Configuration.deprecation: user.name is deprecated. Instead, use mapreduce.job.user.name
      

      【讨论】:

      • 是的,我在我的程序中使用了新的 API“org.apache.hadoop.mapreduce”,但仍然收到信息消息...
      【解决方案3】:

      已弃用意味着这些 API 仍然存在,但将在未来的版本中删除。 mapred 命名空间是旧的,并且添加了新的 mapreduce 命名空间来替换它。

      正如信息消息和朱图拉拉所说,如果你想避免这些,你需要使用新的 API 而不是旧的。新的 API 是 org.apache.hadoop.mapreduce。顺便说一句,“新”API 自 2009 年以来就已存在。您可以查看 this presentation 了解更改

      【讨论】:

      • 其实我在我的程序中使用了新的API“org.apache.hadoop.mapreduce”,但它仍然显示这些信息消息......我不知道为什么
      • 这是因为在 Hadoop 2 中,API 经历了更多变化
      • 好的,那么在导入新的 API 之后,接下来我应该怎么做才能避免出现这个信息?
      • 按照说明进行操作 :) 您可以将当前代码添加到问题中,我或这里的其他人将帮助修改它
      • 阿农,我不认为你明白。他没有使用job.user.name。我遇到了同样的错误,也不要使用它。我猜测(疯狂的猜测)这可能是一个 Maven 问题?我正在使用 Maven 将其打包并获取已弃用的东西的列表......我不使用。我使用:“ Configuration config = new Configuration(); Job job = new Job(config, "WordJob"); ”来设置工作......这可能是问题吗?
      猜你喜欢
      • 2014-02-09
      • 1970-01-01
      • 2014-02-17
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多