java.lang.NoSuchMethodError:org.apache.hadoop.conf.Configuration.addDeprecation

时间:2014-07-04 03:09:58

标签: hadoop

我计划使用hive0.12安装hadoop-1.2.1。安装hadoop-1.2.1后,我也配置了hive0.12。但当我使用bin/hive命令时,我得到:

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.conf.Configuration.addDeprecation(Ljava/lang/String;Ljava/lang/String;)V
    at org.apache.hadoop.hive.conf.HiveConf.<clinit>(HiveConf.java:77)
    at org.apache.hadoop.hive.common.LogUtils.initHiveLog4jCommon(LogUtils.java:74)
    at org.apache.hadoop.hive.common.LogUtils.initHiveLog4j(LogUtils.java:58)
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:639)
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:623)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:160)

如何解决问题?

3 个答案:

答案 0 :(得分:4)

原因

从hadoop 2.3.0添加了

org.apache.hadoop.conf.Configuration.addDeprecation()方法。但正如你所写,你的hadoop发行版是1.2.1。简而言之,您的蜂巢安装和hadoop安装彼此不适合。必须为hadoop 1.2.1重建您的配置单元。

解决方案

首选:将hadoop安装升级到2.x.x

这种做法很容易。由于hadoop 1.2.1不再更新,升级安装是可行的。删除当前的hadoop安装并安装hadoop 2.5.1(最新版本,截至目前)。要安装它,建议使用tutorial

第二选择:重建hadoop 1.2.1的hive发行版

安装时,必须使用以下命令构建hive发行版:

mvn clean install -Phadoop-2,dist

尝试此命令:

mvn clean install -Phadoop-1,dist

使用此命令,将在 packaging / target / apache-hive-0.12-bin 目录中创建输出。用它替换你当前的配置单元。

答案 1 :(得分:1)

您可能已将hadoop-core-1.2.1.jar放在Hadoop 2.x.x类路径目录中,将其删除。 (这对我有用)

答案 2 :(得分:0)

删除您的hadoop-core-1.2.1.jar依赖项,对我有用