1. 程式人生 > >解決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

樓主今天在開發後端介面的時候,發現報了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. 

 

 

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

 

編輯系統變數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。配置完環境變數後,重啟電腦即可。

這裡將自己的實踐操作經歷寫出來,希望可以幫到人,也感謝上面的技術貼,幫到自己找到了解決方向,最終成功地解決了該問題。

參考博文:https://blog.csdn.net/love666666shen/article/details/78812622