解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. 


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
注意,下载的文件都是别人编译后的文件,有些下载的文件不全或者与系统的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


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

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

总结:

参考网上的技术贴的方式配置环境变量后还是出现相同的问题:
原因总结:可能的原因有
(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 。配置完环境变量后,重启电脑即可。
这里将自己的实践操作经历写出来,希望可以帮到人,也感谢上面的技术贴,帮到自己找到了解决方向,最终成功地解决了该问题。

参考资料:

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

love666666shen

谢谢您的鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值