Hadoop版本2.9.0,Java - 1.8.0_162
当尝试运行此处给出的示例:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html时,在独立操作下,我收到以下错误:
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.0.jar grep input output 'dfs[a-z.]+'
java.lang.NoSuchMethodError: org.apache.hadoop.util.ProgramDriver.run([Ljava/lang/String;)I
at org.apache.hadoop.examples.ExampleDriver.main(ExampleDriver.java:74)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.hadoop.util.RunJar.main(RunJar.java:156)
我是hadoop的新手,不知道如何解决这个问题。我在hadoop-env.sh中设置了JAVA_HOME。我很确定我使用的是java和hadoop的正确兼容版本 任何帮助都会有用。
答案 0 :(得分:0)
尼什,
错误消息表示虽然运行时能够找到类ProgramDriver,但函数run()不存在。
最可能的原因是您正在运行旧版本的Hadoop,暴露了ProgramDriver中的差异界面。大约一年前,这个方法在被调用driver()之后被重命名为run()。
对此的修复将确保您运行最新版本的Hadoop。
供您参考,请查看他们提出相同问题的以下链接。
Error while executing hadoop-mapreduce-examples-2.2.0.jar
Can the hadoop programm which write under the hadoop-2.2.0 run in hadoop-1.2.1?