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

最近使用scala编写程序,在Windows系统下调试,对远程服务器上的hbase和hive中的表进行相应的操作,运行时报错 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. 
解Windows系统下运行hadoop、spark程序出错Could not locate executablenull\bin\winutils.exe in the Hadoop binaries_第1张图片


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、spark程序出错Could not locate executablenull\bin\winutils.exe in the Hadoop binaries_第2张图片

编辑系统变量Path,添加%HADOOP_HOME%\bin;
解Windows系统下运行hadoop、spark程序出错Could not locate executablenull\bin\winutils.exe in the Hadoop binaries_第3张图片

再次运行程序,即可正常执行。
解Windows系统下运行hadoop、spark程序出错Could not locate executablenull\bin\winutils.exe in the Hadoop binaries_第4张图片

总结:

参考网上的技术贴的方式配置环境变量后还是出现相同的问题:
原因总结:可能的原因有
(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.csdn.net/shawnhu007/article/details/51518879 这篇文章 被坑后,发现其增加HADOOP_HOME系统变量(原文为用户变量,实际应为系统变量)后, 在系统变量path里增加$HADOOP_HOME\bin(这里又有错误,而$应该是Linux系统下的环境变量配置,Windows系统下应该为%),实际应该编辑系统变量path,添加 %HADOOP_HOME%\bin 。配置完环境变量后,重启电脑即可。
这里将自己的实践操作经历写出来,希望可以帮到人,也感谢上面的技术贴,帮到自己找到了解决方向,最终成功地解决了该问题。

参考资料:
http://blog.csdn.net/baidu_19473529/article/details/54693523
http://blog.csdn.net/lanwenbing/article/details/40783335


你可能感兴趣的:(大数据)