日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

本地运行hadoop-Failed to locate the winutils binary in the hadoop binary path

發布時間:2025/3/11 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 本地运行hadoop-Failed to locate the winutils binary in the hadoop binary path 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://www.cnblogs.com/zq-inlook/p/4386216.html

之前在mac上調試hadoop程序(mac之前配置過hadoop環境)一直都是正常的。因為工作需要,需要在windows上先調試該程序,然后再轉到linux下。程序運行的過程中,報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.

  通過斷點調試、查看源碼發現程序需要根據HADOOP_HOME找到winutils.exe,由于win機器并沒有配置該環境變量,所以程序報 null\bin\winutils.exe。

?

privatestatic String checkHadoopHome() {// first check the Dflag hadoop.home.dir with JVM scopeString home = System.getProperty("hadoop.home.dir");// fall back to the system/user-global env variableif (home == null) {home = System.getenv("HADOOP_HOME");}try {// couldn't find either setting for hadoop's home directoryif (home == null) {thrownew IOException("HADOOP_HOME or hadoop.home.dir are not set.");}if (home.startsWith("\"") && home.endsWith("\"")) {home = home.substring(1, home.length()-1);}// check that the home setting is actually a directory that existsFile homedir = new File(home);if (!homedir.isAbsolute() || !homedir.exists() || !homedir.isDirectory()) {thrownew IOException("Hadoop home directory " + homedir+ " does not exist, is not a directory, or is not an absolute path.");}home = homedir.getCanonicalPath();} catch (IOException ioe) {if (LOG.isDebugEnabled()) {LOG.debug("Failed to detect a valid hadoop home directory", ioe);}home = null;} return home;}

  private?static?String?HADOOP_HOME_DIR?=?checkHadoopHome();

publicstaticfinal String getQualifiedBinPath(String executable) throws IOException {// construct hadoop bin path to the specified executableString fullExeName = HADOOP_HOME_DIR + File.separator + "bin" + File.separator + executable;File exeFile = new File(fullExeName);if (!exeFile.exists()) {thrownew IOException("Could not locate executable " + fullExeName+ " in the Hadoop binaries.");}return exeFile.getCanonicalPath();}/** a Windows utility to emulate Unix commands */publicstaticfinal String WINUTILS = getWinUtilsPath();publicstaticfinal String getWinUtilsPath() {String winUtilsPath = null;try {if (WINDOWS) {winUtilsPath = getQualifiedBinPath("winutils.exe");}} catch (IOException ioe) {LOG.error("Failed to locate the winutils binary in the hadoop binary path",ioe);}return winUtilsPath;}

  找到原因后就去網上問了度娘,找到了解決方案,很簡單,如下:

  1.下載winutils的windows版本

  GitHub上,有人提供了winutils的windows的版本,項目地址是:https://github.com/srccodes/hadoop-common-2.2.0-bin,直接下載此項目的zip包,下載后是文件名是hadoop-common-2.2.0-bin-master.zip,隨便解壓到一個目錄

  2.配置環境變量

  增加用戶變量HADOOP_HOME,值是下載的zip包解壓的目錄,然后在系統變量path里增加%HADOOP_HOME%\bin 即可?! ?/p>

  再次運行程序,正常執行。



總結

以上是生活随笔為你收集整理的本地运行hadoop-Failed to locate the winutils binary in the hadoop binary path的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。