錯(cuò)誤信息:
Wrong FS: hdfs://localhost:9000/user/...  
expected: file:///

問題描述:
在本地運(yùn)行hadoop Map/Reduce程序時(shí),在涉及到hdfs文件操作的時(shí)候,往往會(huì)出現(xiàn)上面提到的錯(cuò)誤,例如,下面這段代碼:
1 Path clear_path = new Path(args[1]);
2 FileSystem fs = FileSystem.get(conf);
3 fs.delete(clear_path);

通過試驗(yàn)發(fā)現(xiàn),在分布式hadoop集群上運(yùn)行這段代碼是不會(huì)出現(xiàn)錯(cuò)誤的,然而在本機(jī)偽分布式環(huán)境下運(yùn)行這段代碼就會(huì)出現(xiàn)前面提到的錯(cuò)誤信息。有兩種方法來解決這個(gè)問題。

解決方法1:
將上述代碼稍作修改,利用clear_path來獲取FileSystem,改為如下代碼片段:
Path clear_path = new Path(args[1]);
FileSystem fs 
= clear_path.getFileSystem(conf);
fs.delete(clear_path);
這樣運(yùn)行起來就不會(huì)報(bào)錯(cuò)。

解決方案2:
更為徹底的解決方法需要將hadoop目錄中的conf文件夾中的hdfs-site.xml與core-site.xml復(fù)制到你的項(xiàng)目的目錄之下,這樣就不會(huì)再報(bào)這種錯(cuò)誤。