当我设置HADOOP_HOME =/cygdrive/c/ecosystem/hadoop-2.5.1然后尝试从Cygwin 运行bin/hadoop fs或bin/hadoop hadoop-streaming.jar时,我收到以下错误:
ERROR [main] util.Shell (Shell.java:getWinUtilsPath(373)) - 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.(Shell.java:363) at org.apache.hadoop.util.GenericOptionsParser.preProcessForWindows(GenericOptionsParser.java:432) at org.apache.hadoop.util.GenericOptionsParser.parseGeneralOptions(GenericOptionsParser.java:478) at org.apache.hadoop.util.GenericOptionsParser. (GenericOptionsParser.java:170) at org.apache.hadoop.util.GenericOptionsParser. (GenericOptionsParser.java:153) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:64) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84) at org.apache.hadoop.fs.FsShell.main(FsShell.java:340) Exception in thread "main" java.lang.RuntimeException: core-site.xml not found at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:2269) at org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:2195) at org.apache.hadoop.conf.Configuration.getProps(Configuration.java:2112) at org.apache.hadoop.conf.Configuration.set(Configuration.java:989) at org.apache.hadoop.conf.Configuration.set(Configuration.java:961) at org.apache.hadoop.conf.Configuration.setBoolean(Configuration.java:1299) at org.apache.hadoop.util.GenericOptionsParser.processGeneralOptions(GenericOptionsParser.java:319) at org.apache.hadoop.util.GenericOptionsParser.parseGeneralOptions(GenericOptionsParser.java:479) at org.apache.hadoop.util.GenericOptionsParser. (GenericOptionsParser.java:170) at org.apache.hadoop.util.GenericOptionsParser. (GenericOptionsParser.java:153) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:64) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84) at org.apache.hadoop.fs.FsShell.main(FsShell.java:340)
我可以访问bin/hadoop版本以及classpath和大多数其他命令.我想也许我需要一个Windows样式路径,以便它可以符合\ bin\winutils样式.所以,我设置了HADOOP_HOME = c:\ ecosystem\hadoop-2.5.1,这个错误就消失了.但是,现在我在Cygwin中运行时收到链接错误.我通过Windows Command 使用HADOOP_HOME = c:\ ecosystem\hadoop-2.5.1测试了hadoop ,我可以毫无问题地运行MapReduce作业.
我想在Cygwin中成功运行hadoop,我不想处理链接错误.如果我保留HADOOP_HOME =/cygdrive/c/ecosystem/hadoop-2.5.1,有什么方法可以设置hadoop-config或其他文件来查找Windows样式路径,如果Cygwin路径失败或为空?在hadoop-config中可能是这样的:
if ["$HADOOP_HOME" = ""]; then HADOOP_HOME=$(cygpath -w "$HADOOP_HOME") fi
显然这个特殊的代码在hadoop-config中不起作用,但我想你会得到一般的想法.任何帮助,将不胜感激.
当我尝试通过Eclipse设置环境变量HADOOP_HOME来尝试在Windows中本地执行Hadoop MR程序时,我解决了与Eclipse类似的错误:运行 - >运行配置 - >环境.