解决Windows系统下运行hadoop程序出错Could not locate executablenullinwinutils.exe in the Hadoop binaries

时间:2024-05-19 14:00:26

楼主今天在开发后端接口的时候,发现报了Could not locate executablenull\bin\winutils.exe in the Hadoop binaries    

的错误,经过分析是我调用了同事写的接口,同事那个模块是引入了hadoop,我在自己模块调用的时候也需要配置相关

的配置文件(配置文件不要忘了),并且的话还需要安装hadoop的winutils.exe,在网上搜到一篇文章,现在分享给大家:

 

 

最近使用scala编写程序,在Windows系统下调试,对远程服务器上的hbase和hive中的表进行相应的操作,运行时报错Failed to locate the winutils binary in the hadoop binary path  java.io.IOException: Could not locate executablenull\bin\winutils.exe in the Hadoop binaries. 

解决Windows系统下运行hadoop程序出错Could not locate executablenull\bin\winutils.exe in the Hadoop binaries

 

 

winutils.exe是在Windows系统上需要的hadoop调试环境工具,里面包含一些在Windows系统下调试hadoop、spark所需要的基本的工具类,另外在使用eclipse调试hadoop程序是,也需要winutils.exe,需要配置上面的环境变量。eclipse的插件可以在这里下载GitHub - winghc/hadoop2x-eclipse-plugin: eclipse plugin for hadoop 2.2.0 , 2.4.1

https://github.com/winghc/hadoop2x-eclipse-plugin  。

注意,下载的文件都是别人编译后的文件,有些下载的文件不全或者与系统的hadoop版本不对应,或者编译不成功,也会出现上面的问题,要想自己编译可参考https://www.zybuluo.com/ncepuwanghui/note/343755 这篇文章。

 

 

参考查阅了好多资料,遇到了好几个坑,浪费了许多时间,索性在这里记下来,一作为备忘,二来希望可以帮助更多的人跳过这些坑。

 

出现上面的问题,可能是因为windows环境下缺少winutils.exe文件或者版本不兼容的原因。

 

解决办法:

(1)下载winutils,注意需要与hadoop的版本相对应。

hadoop2.2版本可以在这里下载https://github.com/srccodes/hadoop-common-2.2.0-bin

hadoop2.6版本可以在这里下载https://github.com/amihalik/hadoop-common-2.6.0-bin

由于配置的测试集群是hadoop2.6,所以我在这里下载的是2.6.0版本的。下载后,将其解压。

 

(2)配置环境变量

①增加系统变量HADOOP_HOME,值是下载的zip包解压的目录,我这里解压后将其重命名为hadoop-common-2.6.0

②在系统变量path里增加%HADOOP_HOME%\bin

③重启电脑,使环境变量配置生效,上述问题即可解决。  

 

添加系统变量HADOOP_HOME

解决Windows系统下运行hadoop程序出错Could not locate executablenull\bin\winutils.exe in the Hadoop binaries解决Windows系统下运行hadoop程序出错Could not locate executablenull\bin\winutils.exe in the Hadoop binaries解决Windows系统下运行hadoop程序出错Could not locate executablenull\bin\winutils.exe in the Hadoop binaries

 

编辑系统变量Path,添加%HADOOP_HOME%\bin;

解决Windows系统下运行hadoop程序出错Could not locate executablenull\bin\winutils.exe in the Hadoop binaries

 

再次运行程序,即可正常执行。

解决Windows系统下运行hadoop程序出错Could not locate executablenull\bin\winutils.exe in the Hadoop binaries

 

总结:

 

参考网上的技术贴的方式配置环境变量后还是出现相同的问题:

原因总结:可能的原因有

(1)版本不对,下载的是hadoop-common2.2的编译版本,最后在https://github.com/amihalik/hadoop-common-2.6.0-bin这里下载一个hadoop-common2.6的window编译版本(公司集群用的是hadoop2.6版本)

(2)原技术贴中说的是增加用户变量HADOOP_HOME,值是下载的zip包解压的目录,然后在系统变量path里增加%HADOOP_HOME%\bin 即可。而实际上应该是增加系统变量,如图是添加后的系统变量HADOOP_HOME(这里将下载后的hadoop-common-2.6.0-bin-master.zip文件解压到E:\SoftwareAPP\hadoop-common目录下,并将其文件名改为hadoop-common-2.6.0)

(3)参考http://blog.****.net/shawnhu007/article/details/51518879这篇文章 被坑后,发现其增加HADOOP_HOME系统变量(原文为用户变量,实际应为系统变量)后,在系统变量path里增加$HADOOP_HOME\bin(这里又有错误,而$应该是Linux系统下的环境变量配置,Windows系统下应该为%),实际应该编辑系统变量path,添加%HADOOP_HOME%\bin。配置完环境变量后,重启电脑即可。

这里将自己的实践操作经历写出来,希望可以帮到人,也感谢上面的技术贴,帮到自己找到了解决方向,最终成功地解决了该问题。

参考博文:https://blog.****.net/love666666shen/article/details/78812622