錯誤信息:
Wrong FS: hdfs://localhost:9000/user/...
expected: file:///
問題描述:
在本地運行hadoop Map/Reduce程序時,在涉及到hdfs文件操作的時候,往往會出現上面提到的錯誤,例如,下面這段代碼:
1 Path clear_path = new Path(args[1]);
2 FileSystem fs = FileSystem.get(conf);
3 fs.delete(clear_path);
通過試驗發現,在分布式hadoop集群上運行這段代碼是不會出現錯誤的,然而在本機偽分布式環境下運行這段代碼就會出現前面提到的錯誤信息。有兩種方法來解決這個問題。
解決方法1:
將上述代碼稍作修改,利用clear_path來獲取FileSystem,改為如下代碼片段:
Path clear_path = new Path(args[1]);
FileSystem fs = clear_path.getFileSystem(conf);
fs.delete(clear_path);
這樣運行起來就不會報錯。
解決方案2:
更為徹底的解決方法需要將hadoop目錄中的conf文件夾中的hdfs-site.xml與core-site.xml復制到你的項目的目錄之下,這樣就不會再報這種錯誤。