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

解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 executablenull\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

 

你可能感兴趣的:(scala)