我在为最新的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)
答案 0 :(得分:93)
简单解决方案:
从here下载并添加到$HADOOP_HOME/bin
(资料来源:Click here)
编辑:
对于 hadoop-2.6.0 ,您可以从Titus Barik blog >>下载二进制文件。
我不仅需要将HADOOP_HOME
指向解压缩的目录[path]
,还需要提供系统属性-Djava.library.path=[path]\bin
来加载本机库(dll)。
答案 1 :(得分:26)
如果我们直接采用Apache Hadoop 2.2.0版本的二进制发行版并尝试在Microsoft Windows上运行它,那么我们将遇到ERROR util.Shell:无法在hadoop二进制路径中找到winutils二进制文件。
Apache Hadoop 2.2.0版本的二进制发行版不包含一些Windows本机组件(如winutils.exe,hadoop.dll等)。这些是在Windows上运行Hadoop所必需的(非可选)。
因此,您需要在位于hadoop源代码内的“BUILD.txt”文件之后,从源代码构建hadoop的Windows本机二进制分发。您还可以按照以下帖子进行屏幕截图的分步指南
Build, Install, Configure and Run Apache Hadoop 2.2.0 in Microsoft Windows OS
ERROR util.Shell: Failed to locate the winutils binary in the hadoop binary path
答案 2 :(得分:24)
如果在使用Spark运行自包含的本地应用程序时遇到此问题(即,在向项目添加spark-assembly-xxx-hadoopx.xxjar或Maven依赖项之后),更简单的解决方案是放置winutils .exe(从here下载)&#34; C:\ winutil \ bin&#34;。然后,您可以通过在代码中添加以下行来将winutils.exe添加到hadoop主目录:
System.setProperty("hadoop.home.dir", "c:\\\winutil\\\")
来源:点击here
答案 3 :(得分:17)
声明 java.io.IOException:找不到可执行文件null \ bin \ winutils.exe
解释在扩展或替换环境变量时收到null。如果你在Common Package中的Shell.Java中看到Source,你会发现HADOOP_HOME变量没有被设置,你接收的是null而不是错误。
因此,需要正确设置HADOOP_HOME或变量hadoop.home.dir属性。
希望这有帮助。
谢谢, 凯姆利什沃。
答案 4 :(得分:11)
我在使用Eclipse时遇到了这个问题。在我的情况下,我下载了正确的Hadoop版本(hadoop-2.5.0-cdh5.3.0.tgz),我提取了内容并将其直接放在我的C盘中。然后我去了
Eclipse-&gt;调试/运行配置 - &gt;环境(标签) - &gt;并添加了
变量:HADOOP_HOME
值:C:\ hadoop-2.5.0-cdh5.3.0
答案 5 :(得分:7)
您可以在此处下载winutils.exe: http://public-repo-1.hortonworks.com/hdp-win-alpha/winutils.exe
然后将其复制到您的dir()
目录。
答案 6 :(得分:2)
winutils.exe。请下载 hadoop-common-2.2.0 zip文件。 winutils.exe可以在bin文件夹中找到。解压缩zip文件并将其复制到本地hadoop / bin文件夹中。
答案 7 :(得分:2)
我遇到了同样的问题。从HADOOP_HOME路径中删除bin\
为我解决了这个问题。 HADOOP_HOME变量的路径应该类似于。
C:\dev\hadoop2.6\
可能需要重启系统。就我而言,重启IDE就足够了。
答案 8 :(得分:2)
在Windows中设置 HADOOP_HOME 变量以解决问题。
您可以在org/apache/hadoop/hadoop-common/2.2.0/hadoop-common-2.2.0-sources.jar!/org/apache/hadoop/util/Shell.java
找到答案:
来自
的IOException public static final String getQualifiedBinPath(String executable)
throws IOException {
// construct hadoop bin path to the specified executable
String fullExeName = HADOOP_HOME_DIR + File.separator + "bin"
+ File.separator + executable;
File exeFile = new File(fullExeName);
if (!exeFile.exists()) {
throw new IOException("Could not locate executable " + fullExeName
+ " in the Hadoop binaries.");
}
return exeFile.getCanonicalPath();
}
来自
的HADOOP_HOME_DIR// first check the Dflag hadoop.home.dir with JVM scope
String home = System.getProperty("hadoop.home.dir");
// fall back to the system/user-global env variable
if (home == null) {
home = System.getenv("HADOOP_HOME");
}
答案 9 :(得分:2)
version
/ bin
答案 10 :(得分:2)
在Pyspark中,要使用Pycharm运行本地Spark应用程序,请在下面的行中使用
os.environ['HADOOP_HOME'] = "C:\\winutils"
print os.environ['HADOOP_HOME']
答案 11 :(得分:1)
我在Windows中遇到了同样的问题。我通过
修复了它答案 12 :(得分:1)
从this链接以zip格式下载所需版本的hadoop文件夹(如果您在Windows上安装spark,则为其构建Spark,则为hadoop版本安装)。
将zip解压缩到所需目录。
您需要具有hadoop\bin
形式的目录(如果需要,显式创建此类hadoop\bin
目录结构),bin
包含下载的hadoop的bin
文件夹中包含的所有文件。除了winutil.exe之外,这将包含许多文件,如hdfs.dll,hadoop.dll等。
现在create environment variable HADOOP_HOME
并将其设置为<path-to-hadoop-folder>\hadoop
。然后add ;%HADOOP_HOME%\bin;
到PATH
环境变量。
打开“新命令提示符”并尝试重新运行命令。
答案 13 :(得分:0)
我使用&#34; hbase-1.3.0&#34;和&#34; hadoop-2.7.3&#34;版本。设置HADOOP_HOME环境变量并复制&#39; winutils.exe&#39; HADOOP_HOME / bin文件夹下的文件解决了Windows操作系统上的问题。 注意将HADOOP_HOME环境设置为hadoop的安装文件夹(这些版本不需要/ bin文件夹)。 另外,我更喜欢使用跨平台工具cygwin来解决linux操作系统功能(尽可能尽可能),因为Hbase团队推荐linux / unix环境。
答案 14 :(得分:0)
Winutils.exe用于运行SPARK的Shell命令。 需要在不安装Hadoop的情况下运行Spark时,需要此文件。
步骤如下:
从以下位置下载winutils.exe,以获取hadoop 2.7.1。 https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin [注意:如果您使用的是单独的hadoop版本,请从上述位置从GITHUB的相应hadoop版本文件夹中下载winutils。]
现在,在C:\驱动器中创建一个文件夹“ winutils”。现在,在文件夹“ winutils”内创建一个文件夹“ bin”,并将winutils.exe复制到该文件夹中。 因此,winutils.exe的位置将为 C:\ winutils \ bin \ winutils.exe
现在,打开环境变量并设置HADOOP_HOME = C:\ winutil [注意:请不要在 HADOOP_HOME 中添加 \ bin ,并且无需在路径中设置HADOOP_HOME。
您的问题必须解决!