maven hadoop 3.x HADOOP_HOME and hadoop.home.dir are unset Not implemented by the WebHdfsFileSystem FileSystem implementation


具體異常如下:

解決方案:

刪除pom文件中的hadoop-core的依賴,原因:hadoop-core是1.x的產物,在2.x之后已經被hadoop-common取代,我配置的時候同時使用了這兩個依賴導致jar包沖突.

附上我測試上傳用的代碼

 1 /**  2  * 上傳文件到hdfs  3  * @author tele  4  *  5  */
 6 public class Demo1 {  7     public static void main(String[] args) throws Exception {  8         Configuration conf = new Configuration();  9         FileSystem fs = FileSystem.get(new URI("hdfs://hadoop002:9000"), conf,"tele"); 10         fs.copyFromLocalFile(new Path("f:/test.sql"),new Path("/111.sql")); 11  fs.close(); 12         System.out.println("上傳完畢"); 13  } 14 }

如果下載的過程中出現了 HADOOP_HOME and hadoop.home.dir are unset,那么就說明你沒有配置windows本地的hadoop環境變量.你可能會想我是遠程調用linux下的hadoop,與我本地的hadoop有什么關系?如果你的操作只對遠程的hadoop生效,如上傳,創建目錄,文件改名(寫)等那么你是不需要在windows本地配置hadoop的,可一旦涉及到下載(讀),hadoop內部的緩存機制要求本地也必須有hadoop,於是也會出現HADOOP_HOME and hadoop.home.dir are unset,解決辦法配置HADOOP_HOME並加入%HADOOP_HOME%\bin到PATH中,之后測試下hadoop version命令,有效的話重啟你的eclipse/myeclipse,但這還不夠,windows下的hadoop還需要winutils.exe,否則會報Could not locate Hadoop executable: xxxx\winutils.exe 

測試下載的代碼如下

 1    static FileSystem fs;  2     static {  3         Configuration conf = new Configuration();  4         try {  5             fs = FileSystem.get(new URI("hdfs://hadoop002:9000"), conf,"tele");  6         } catch (IOException e) {  7             // TODO Auto-generated catch block
 8  e.printStackTrace();  9         } catch (InterruptedException e) { 10             // TODO Auto-generated catch block
11  e.printStackTrace(); 12         } catch (URISyntaxException e) { 13             // TODO Auto-generated catch block
14  e.printStackTrace(); 15  } 16  } 17     
18     //下載文件
19  @Test 20     public void downLoadFile() throws Exception{ 21         //如果為null,重啟myeclipse/eclipse即可
22         System.out.println(System.getenv("HADOOP_HOME")); 23         fs.copyToLocalFile(new Path("/hello2.sql"),new  Path("C:/a.sql")); 24  fs.close(); 25         System.out.println("下載完畢"); 26     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM