无法在hadoop二进制path中findwinutils二进制文件
在启动最新的hadoop-2.2版本的namenode时出现以下错误。 我没有在hadoop bin文件夹中findwinutils 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)
简单的解决scheme :从这里下载并添加到$HADOOP_HOME/bin
(来源: 点击这里 )
编辑:
对于hadoop-2.6.0,您可以从Titus Barik blog >>下载二进制文件。
我不仅需要将HADOOP_HOME
指向提取目录[path]
,还要提供系统属性-Djava.library.path=[path]\bin
来加载本机库(dll)。
如果我们直接采用Apache Hadoop 2.2.0发行版的二进制发行版并尝试在Microsoft Windows上运行它,那么我们将遇到ERROR util.Shell:无法findhadoop二进制path中的winutils二进制文件。
Apache Hadoop 2.2.0发行版的二进制发行版不包含一些Windows原生组件(如winutils.exe,hadoop.dll等)。 这些是必需的(不是可选的)在Windows上运行Hadoop。
所以你需要在hadoop源代码分发版之后的BUILD.txt文件的源代码中构buildhadoop的windows原生二进制发行版。 您也可以按照以下文章一步一步的指导与屏幕截图
在Microsoft Windows操作系统中构build,安装,configuration和运行Apache Hadoop 2.2.0
ERROR util.Shell:无法在hadoop二进制path中findwinutils二进制文件
如果在使用Spark运行自包含的本地应用程序时(即,在将spark-assembly-xxx-hadoopx.xxjar或Maven依赖项添加到项目之后)面临此问题,更简单的解决scheme是将winutils.exe从这里 )在“C:\ winutil \ bin”中。 然后,您可以通过将以下行添加到代码中将winutils.exe添加到hadoop主目录:
System.setProperty("hadoop.home.dir", "c:\\\winutil\\\")
来源:点击这里
声明java.io.IOException:找不到可执行文件null \ bin \ winutils.exe
解释扩展或replace环境variables时收到null。 如果您在Common Package中的Shell.Java中看到Source,您会发现HADOOP_HOMEvariables没有被设置,并且您正在接收null而不是那个错误。
所以,HADOOP_HOME需要正确设置或者是variableshadoop.home.dir属性。
希望这可以帮助。
谢谢,Kamleshwar。
我在使用Eclipse时遇到了这个问题。 在我的情况下,我已经下载了正确的Hadoop版本(hadoop-2.5.0-cdh5.3.0.tgz),我提取的内容,直接放在我的C驱动器。 然后我去了
Eclipse->debugging/运行configuration – >环境(选项卡) – >并添加
variables:HADOOP_HOME
值:C:\ hadoop-2.5.0-cdh5.3.0
您可以在这里下载winutils.exe: http ://public-repo-1.hortonworks.com/hdp-win-alpha/winutils.exe
然后将其复制到您的HADOOP_HOME/bin
目录。
winutils.exe是hadoop执行hadoop相关命令所必需的。 请下载hadoop-common-2.2.0 zip文件。 winutils.exe可以在bin文件夹中find。 解压缩zip文件并将其复制到本地hadoop / bin文件夹中。
我面临同样的问题。 从HADOOP_HOMEpath中删除bin\
解决了我。 HADOOP_HOMEvariables的path应该如下所示。
C:\dev\hadoop2.6\
系统可能需要重启。 在我的情况下,重新启动IDE就足够了。
在Windows中设置HADOOP_HOMEvariables来解决问题。
你可以在org/apache/hadoop/hadoop-common/2.2.0/hadoop-common-2.2.0-sources.jar!/org/apache/hadoop/util/Shell.java
find答案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"); }
我在Windows中得到同样的问题。 我修好了
- 从链接下载hadoop-common-2.2.0-bin-master。
- 在Environmentvariables中创build一个用户variablesHADOOP_HOME,并将hadoop-common bin目录的path指定为一个值。
- 您可以通过在cmd中运行hadoop来validation它。
- 重新启动IDE并运行它。
我使用了“hbase-1.3.0”和“hadoop-2.7.3”版本。 设置HADOOP_HOME环境variables并复制HADOOP_HOME / bin文件夹下的“winutils.exe”文件解决了windows操作系统上的问题。 注意将HADOOP_HOME环境设置为hadoop的安装文件夹(这些版本不需要/ bin文件夹)。 此外,我首选使用跨平台工具cygwin来解决Linux操作系统的function(尽可能),因为Hbase团队推荐linux / unix环境。