使用Hadoop 2.6.0在Windows上运行wordcount Hadoop示例

时间:2015-02-03 05:28:46

标签: hadoop mapreduce word-count

我是Hadoop的新手,并了解到2.x版本,我可以在我的本地Windows 7 64位机器上尝试Hadoop。
我安装了hadoop 2.6.0并安装了cygwin 我可以执行bin / hadoop版本,但是在执行jar命令时出现以下错误:
注意:我还将winutils.jar放在bin中,来自hadoop-common-2.2.0.jar。
请帮忙。我无法摆脱这个错误。我也输入了输入和输出参数,它仍然失败。

$ bin/hadoop jar /Hadoop/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount
15/02/03 12:40:45 ERROR util.Shell: Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:355)
at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:370)
at org.apache.hadoop.util.Shell.<clinit>(Shell.java:363)
at org.apache.hadoop.util.GenericOptionsParser.preProcessForWindows
(GenericOptionsParser.java:438)
at org.apache.hadoop.util.GenericOptionsParser.parseGeneralOptions
(GenericOptionsParser.java:484)
at org.apache.hadoop.util.GenericOptionsParser.<init>
(GenericOptionsParser.java:170)
at org.apache.hadoop.util.GenericOptionsParser.<init>   
(GenericOptionsParser.java:153)
at org.apache.hadoop.examples.WordCount.main(WordCount.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke
(ProgramDriver.java:71)
at org.apache.hadoop.util.ProgramDriver.run(ProgramDriver.java:144)
at org.apache.hadoop.examples.ExampleDriver.main(ExampleDriver.java:74)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Usage: wordcount <in> [<in>...] <out>

我也可以运行以下命令:

$ bin/hadoop jar /Hadoop/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar

2 个答案:

答案 0 :(得分:0)

过去曾经是一个问题。但是,如果你能够通过jar运行程序,可能还有其他错误。 如果使用Java代码同样适用于您,则可以编辑jar以删除引发新异常的代码。

要加倍确定,请检查bin目录是否包含winutils.exe和hadoop.dll。

如果他们不在场,很可能其他人必须面对类似的问题而且会保留这些文件。当从操作系统上的源代码构建Hadoop时,会创建这些文件。

答案 1 :(得分:0)

好像你已经安装了hadoop 2.6.0和旧版本的hadoop winutils。您必须安装当前hadoop版本的hadoop winutils。尝试从这个github repo https://github.com/steveloughran/winutils/tree/master/hadoop-2.6.0/bin下载winutils 最后用winutils bin目录替换bin目录!