1)在編寫MR程序的時候經常會有如下代碼:
String uri=“。。。。”;
Configuration conf=new Configuration();
FileSystem fs=FileSystem.get(URI.create(uri),conf);
URI究竟是什么東西?有什么用?
2)URI稱為統一資源標示符,在Hadoop中使用URI路徑作為參數,其格式是:scheme://authority/path。對於HDFS文件系統,scheme(對應協議名)就是hdfs(對於本地文件系統就是file),authority就是namenode主機名,path就是文件(目錄)的路徑構成的字符串。一個HDFS目錄或者文件,比如/parent/child,可以表示為hdfs://namenode:namenodeport/parent/child,一直namenode名稱為Master,對應HDFS的端口號是9000的話,實際上就是hdfs://Master:9000/parent/child。當然,scheme和authority參數是可選的,也就是可以省略,如果未加指定就會使用配置中指定的默認值(也就是core-site.xml中配置項fs.default.name的值),如果fs.default.name=hdfs://Master:9000,那么僅僅使用/parent/child就可以表示hdfs://Master:9000/parent/child。這樣可以解釋conf和URI一起使用,conf是配置文件(conf目錄下的配置文件們)相關的對象,uri省略了scheme和authority的部分,雖然不完整,但是與conf配置使用,讀取了core-site.xml中的默認scheme值,組成了完整的URI對象,然后創建FileSystem對象。
參考:
https://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html
http://www.cnblogs.com/linjiqin/p/3147837.html