一、FileSystem類提供基本的文件處理功能
import org.apache.hadoop.fs.FileSystem
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
core-site.xml:
<!-- 制定HDFS的老大(NameNode)的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop0:9000</value>
</property>
– 適配器模式,根據配置文件中fs.default.name(hadoop2.x之後是
fs.defaultFS)的值,實例化成不同的對象。
• 本地文件系統:"file:///"
• HDFS: "hdfs://xx.namenode.fqdn:8020/"
– Hadoop中的資源描述方法符合URL規範(RFC1738),
fs.defaut.name的值是默認的協議+server部分
二、文件操作
2.1
– 讀文件 fs.open(Path);
– 新建文件fs.create(Path);
– 對文件追加fs.append(Path);
– 關閉文件句柄fs.close(Path);
• 對於hdfs文件,如果不close的話會導致短期內不能繼續寫入文件。
– 建目錄fs.mkdirs(Path);
– 列目錄 fs.listStatus(Path);
– 通配符處理 fs.globStatus(Path)
• 處理a/b*.lzo形式的輸入路徑
– 刪除文件或目錄 fs.delete(Path,boolean)
– 判斷是否爲文件fs.isFile(Path)
– 設置文件屬性fs.setPermission(..)
2.2
› 從本地上傳文件fs. copyFromLocalFile(Path,Path)
› 從hdfs下載文件fs.copyToLocalFile(Path,Path)
› 獲取文件塊的位置fs. getFileBlockLocations()
› 設定備份數fs.setReplication(Path, short)
三、其他HSFS API
3.1 加載更多的配置文件
Configuration conf = new Configuration();
conf.addResource(new Path(".../core-site.xml"));
conf.addResource(new Path(".../hdfs-site.xml"));
FileSystem fs = FileSystem.get(new URI("hdfs://hadoop01:9000"), conf);
3.2 重新設定連接的namenode
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://NAMENODE_HOSTNAME:PORT");
FileSystem fs = FileSystem.get(new URI("hdfs://hadoop01:9000"), conf);