Hadoop作為大數據主流的基礎架構選擇,至今仍然占據著重要的地位,而基于Hadoop的分布式文件系統HDFS,也在大數據存儲環節發揮著重要的支撐作用。今天的大數據入門分享,我們就主要來講講HDFS分布式文件管理系統。
一、HDFS文件管理系統
根據物理存儲形態,數據存儲可分為集中式存儲與分布式存儲兩種。集中式存儲以傳統存儲陣列(傳統存儲)為主,分布式存儲(云存儲)以軟件定義存儲為主。
傳統存儲:一向以可靠性高、穩定性好,功能豐富而著稱,但與此同時,傳統存儲也暴露出橫向擴展性差、價格昂貴、數據連通困難等不足,容易形成數據孤島,導致數據中心管理和維護成本居高不下。
分布式存儲:將數據分散存儲在網絡上的多臺獨立設備上,一般采用標準x86服務器和網絡互聯,并在其上運行相關存儲軟件,系統對外作為一個整體提供存儲服務。
數據量越來越多,在一個操作系統管轄的范圍存不下了,那么就分配到更多的操作系統管理的磁盤中,但是不方便管理和維護,因此需要一種系統來管理多臺機器上的文件,這就是分布式文件管理系統。
常見的分布式文件系統有GFS、HDFS、Lustre、Ceph、GridFS、mogileFS、TFS、FastDFS等,而HDFS作為Hadoop的核心組件之一,在市場主流的使用非常普遍。
二、HDFS文件系統的特點
優點:
(1)高容錯性。數據自動保存多個副本。通過增加副本的形式,提高容錯性,某一個副本丟失,可以自動恢復。
(2)適合大規模的數據、文件處理。
(3)采用流式的數據訪問方式,一次存入多次讀取,存入的數據只能追加,不能修改。
(4)可以部署在廉價的機器上。
缺點:
(1)不適合低延時的數據訪問,對延時要求在毫秒級別的應用,不適合采用HDFS。HDFS是為高吞吐數據傳輸設計的,因此可能犧牲延時。HBase更適合低延時的數據訪問。
(2)無法高效地對大量小文件進行存儲。文件的元數據(如目錄結構,文件block的節點列表,block-node mApping)保存在NameNode的內存中,整個文件系統的文件數量會受限于NameNode的內存大小。
(3)無法支持并發寫入。一個文件只能有一個寫,不允許多個線程同時寫入。
(4)不支持文件隨機修改,僅支持文件追加。
五、HDFS文件系統常用命令
命令行的交互主要通過hadoop fs來操作。
1、顯示目錄信息
#顯示根目錄下所有文件和目錄
hadoop fs-ls/
#遞歸顯示根目錄下所有文件和目錄
hadoop fs-ls-R/
2、將本地文件或目錄上傳到HDFS
#hdfs dfs-put<本地文件路徑><HDFS路徑>
hdfs dfs-put ceshi.txt/opt/data
copyFromLocal命令同樣用于上傳文件
hdfs dfs-copyFromLocal./ceshi.txt/opt/data
3、將文件或目錄從HDFS中的路徑拷貝到本地
hdfs dfs-get/opt/data/ceshi.txt/usr/local
copyToLocal命令同樣可以實現從HDFS中的路徑拷貝到本地
hdfs dfs-copyToLocal/opt/data/ceshi.txt/usr/local
4、將文件或目錄從HDFS的源路徑移動到目標路徑
不允許跨文件系統移動文件。
hdfs dfs-mv/opt/data/ceshi.txt/opt/local
5、將文件或目錄復制到目標路徑下
hdfs dfs-cp[-f][-p|-p[topax]]URI[URI…]<dest>
選項:
-f選項覆蓋已經存在的目標。
-p選項將保留文件屬性[topx](時間戳,所有權,權限,ACL,XAttr)。
6、刪除一個文件或目錄
hdfs dfs-rm[-f][-r|-R][-skipTrash]URI[URI…]
選項:
如果文件不存在,-f選項將不顯示診斷消息或修改退出狀態以反映錯誤。
-R選項以遞歸方式刪除目錄及其下的任何內容。
-r選項等效于-R。
-skipTrash選項將繞過垃圾桶(如果已啟用),并立即刪除指定的文件。當需要從超配額目錄中刪除文件時,這非常有用。
7、追加一個文件到已存在的文件末尾
hadoop fs-appendToFile<localsrc>...<dst>
hadoop fs-appendToFile./ce.txt/opt/data/ceshi.txt
8、顯示文件內容-cat
9、顯示文件的末尾-tail
10、合并下載多個文件
#將HDFS的/opt/data目錄下的文件合并為hb.txt文件并下載到本地
hadoop dfs-getmerge/opt/data/hb.txt
合并后的文件位于當前目錄,不在hdfs中,是本地文件。
11、統計文件系統的可用空間信息-df
12、顯示給定目錄中包含的文件和目錄的大小或文件的長度
hdfs dfs-du/opt/data/
關于大數據入門,HDFS文件管理系統,以上就為大家做了簡單的介紹了。HDFS作為Hadoop原生的核心組件之一,也是大數據學習當中的一塊重點,分布式文件管理系統HDFS,需要深入去理解和掌握。