hadoop版本2.9.0,java-1.8.0\u 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中设置了javau主页。我确信我使用的是正确的兼容版本的java和hadoop。
任何帮助都是有用的。
1条答案
按热度按时间tyu7yeag1#
尼什,
该错误消息表示,虽然运行时能够找到类programdriver,但函数run()不存在。
最可能的原因是您运行的是旧版本的hadoop,它在programdriver中暴露了一个不同的接口。大约一年前,这个方法在被称为driver()后被重命名为run()。
解决方法是确保您运行的是最新版本的hadoop。
为您的参考,请检查以下链接,他们提出了同样的问题。
执行hadoop-mapreduce-examples-2.2.0.jar时出错
在hadoop-2.2.0下编写的hadoop程序能否在hadoop-1.2.1中运行?