我在为最新的hadoop-2.2版本启动namenode时遇到以下错误.我没有在hadoop bin文件夹中找到winutils exe文件.我试过下面的命令
$ bin/hdfs namenode -format
$ sbin/yarn-daemon.sh start resourcemanager
ERROR [main] util.Shell (Shell.java:getWinUtilsPath(303)) - 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:278)
at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)
at org.apache.hadoop.util.Shell.<clinit>(Shell.java:293)
at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76)
at org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.main(ResourceManager.java:863)
Run Code Online (Sandbox Code Playgroud) 我是Hadoop的新手,并且在尝试在我的Windows 7机器上运行它时遇到了问题.特别是我对运行Hadoop 2.1.0感兴趣,因为它的发行说明提到支持在Windows上运行.我知道我可以尝试在Windows上使用Cygwin运行1.x版本,或者甚至使用例如Cloudera准备好的VM,但这些选项在某些方面对我来说不太方便.
检查了来自http://apache-mirror.rbc.ru/pub/apache/hadoop/common/hadoop-2.1.0-beta/的tarball 我发现确实有一些*.cmd脚本可以在没有Cygwin的情况下运行.当我编写HDFS分区时,一切正常,但是当我尝试运行hdfs namenode守护进程时,我遇到了两个错误:首先,非致命,是找不到winutils.exe(它确实没有在下载的tarball中出现).我在Apache Hadoop源代码树中找到了该组件的源代码,并使用Microsoft SDK和MSbuild对其进行了编译.由于详细的错误消息,很明显在哪里放置可执行文件来满足Hadoop.但是致命的第二个错误并没有包含足够的信息供我解决:
13/09/05 10:20:09 FATAL namenode.NameNode: Exception in namenode join
java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)
at org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:423)
at org.apache.hadoop.fs.FileUtil.canWrite(FileUtil.java:952)
at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.analyzeStorage(Storage.java:451)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.java:282)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:200)
...
13/09/05 10:20:09 INFO util.ExitUtil: Exiting with status 1
Run Code Online (Sandbox Code Playgroud)
看起来应该编译其他东西.我将尝试使用Maven从源代码构建Hadoop但是不是更简单的方法吗?是不是有一些选项 - 我知道不能禁用本机代码并使该tarball在Windows上可用?
谢谢.
更新.确实是的."Homebrew"包中包含一些额外的文件,最重要的是winutils.exe和hadoop.dll.使用此文件,namenode和datanode成功启动.我认为问题可以结束.如果有人面临同样的困难,我没有删除它.
更新2.为了建立"自制"套餐,我做了以下事情:
设置环境:
设置JAVA_HOME = {path_to_JDK_root}
似乎JAVA_HOME 绝不能包含空间!
set …Run Code Online (Sandbox Code Playgroud)