无法在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.javafind答案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环境。