在hadoop二进制路径中找不到winutils二进制文件
在为最新的hadoop-2.2版本启动namenode时,我遇到以下错误。我在hadoop bin文件夹中找不到winutils exe文件。我试过下面的命令在hadoop二进制路径中找不到winutils二进制文件,hadoop,Hadoop,在为最新的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
$ 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)
$bin/hdfs namenode-格式
$sbin/thread-daemon.sh启动资源管理器
错误[main]util.Shell(Shell.java:getWinUtilsPath(303))-在hadoop二进制路径中找不到winutils二进制文件
java.io.IOException:在Hadoop二进制文件中找不到可执行文件null\bin\winutils.exe。
位于org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)
位于org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)
位于org.apache.hadoop.util.Shell(Shell.java:293)
位于org.apache.hadoop.util.StringUtils。(StringUtils.java:76)
位于org.apache.hadoop.warn.server.resourcemanager.resourcemanager.main(resourcemanager.java:863)
声明
java.io.IOException:找不到可执行文件null\bin\winutils.exe
说明在扩展或替换环境变量时接收空值。如果您在Common包中的Shell.Java中看到源代码,您将发现HADOOP_HOME变量没有被设置,您将收到null来代替它,因此会出现错误
因此,需要为此正确设置HADOOP_HOME或变量HADOOP.HOME.dir属性
希望这有帮助
谢谢,
Kamleshwar.如果我们直接获取Apache Hadoop 2.2.0版本的二进制发行版并尝试在Microsoft Windows上运行它,那么我们将遇到错误util.Shell:无法在Hadoop二进制路径中找到winutils二进制文件 Apache Hadoop 2.2.0版本的二进制发行版不包含某些windows本机组件(如winutils.exe、Hadoop.dll等)。这些是在Windows上运行Hadoop所必需的(不是可选的) 因此,您需要从hadoop源发行版中的“build.txt”文件后面的源代码构建hadoop的windows本机二进制发行版。你也可以按照下面的帖子进行逐步的屏幕截图指导
hadoop需要winutils.exe来执行与hadoop相关的命令。请下载 hadoop-common-2.2.0 zip文件。winutils.exe可在bin文件夹中找到。解压缩zip文件并将其复制到本地hadoop/bin文件夹中。简单解决方案: 从下载并添加到
$HADOOP\u HOME/bin
()
重要更新:
对于hadoop-2.6.0,您可以从下载二进制文件
我不仅需要将HADOOP\u HOME指向解压缩目录
[path]
,还需要提供系统属性-Djava.library.path=[path]\bin
来加载本机libs(dll)。我在使用Eclipse时遇到了这个问题。在我的例子中,我下载了正确的Hadoop版本(Hadoop-2.5.0-cdh5.3.0.tgz),我提取了内容并将其直接放在我的C驱动器中。然后我去了
Eclipse->调试/运行配置->环境(选项卡)->并添加
变量:HADOOP\u HOME
值:C:\hadoop-2.5.0-cdh5.3.0您可以在此处下载winutils.exe:
然后将其复制到您的
HADOOP\u HOME/bin
目录。如果您在使用Spark运行一个自包含的本地应用程序时遇到这个问题(即,在向项目添加Spark-assembly-x.x.x-hadoopx.x.x.jar或Maven依赖项之后),一个更简单的解决方案是将winutils.exe(从下载)放在“C:\winutil\bin”中。然后,通过向代码中添加以下行,可以将winutils.exe添加到hadoop主目录:
System.setProperty("hadoop.home.dir", "c:\\\winutil\\\")
来源:点击我也面临同样的问题。从HADOOP主路径中删除
bin\
为我解决了这个问题。HADOOP_HOME变量的路径应该类似于
C:\dev\hadoop2.6\
可能需要重新启动系统。在我的例子中,重新启动IDE就足够了。在windows中设置HADOOP\u HOME变量来解决问题 您可以在
org/apache/hadoop/hadoop-common/2.2.0/hadoop-common-2.2.0-sources.jar中找到答案/org/apache/hadoop/util/Shell.java
:
IOException from
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\u HOME\u 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");
}
我使用了“hbase-1.3.0”和“hadoop-2.7.3”版本。设置HADOOP_HOME环境变量并复制HADOOP_HOME/bin文件夹下的“winutils.exe”文件可以解决windows操作系统上的问题。
注意将HADOOP_HOME environment设置为HADOOP的安装文件夹(这些版本不需要/bin文件夹)。
此外,我更喜欢使用跨平台工具解决linux操作系统功能问题(尽可能),因为Hbase团队推荐linux/unix环境。我在windows中也遇到了同样的问题。我把它修好了
- 从下载hadoop-common-2.2.0-bin-master
- 在环境变量中创建一个用户变量HADOOP_HOME,并将HADOOP common bin directory的路径指定为一个值
- 您可以通过在cmd中运行hadoop来验证它
- 重新启动IDE并运行它
hadoop\bin
格式的目录(如果需要,显式创建这样的hadoop\bin
目录结构),其中bin
包含下载的hadoop的bin
文件夹中包含的所有文件。除winutil.exe外,它还将包含许多文件,如hdfs.dll、hadoop.dll等
现在HADOOP\u HOME
并将其设置为\HADOOP
。然后;%HADOOP_HOME%\bin代码>到路径
环境变量
打开“新建命令提示符”并尝试重新运行命令
下载[winutils.exe]
从URL:
版本
/bin
在HADOOP_HOME/bin下通过它
注意:您应该设置环境变量:
U
os.environ['HADOOP_HOME'] = "C:\\winutils"
print os.environ['HADOOP_HOME']