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