1 概述
HDFS是分佈式文件系統,具有高度容錯能力,運行在廉價的機器上。HDFS提供對應用程序數據的高吞吐量訪問,適用於具有大型數據集的應用程序。
2 HDFS特性
(1)可用於存儲超大文件,如(GB,TB,PB)級別的文件。
(2)可運行在廉價的硬件之上,HDFS通過自身的容錯機制來保證數據的安全性
(3)流式數據訪問,支持一次寫入、多次讀取的高效訪問模式。
(4)適合數據訪問高吞吐量的應用場景,不適合要求低延時數據訪問的應用場景。
(5)爲了保證數據訪問的高效性,HDFS不支持多個寫入操作,也不支持在文件的任意位置進行修改,但不排除後續會支持這些操作。
本文講解的是Hadoop2.x發行版
3 HDFS數據塊
HDFS的數據塊默認大小爲128MB,之所以設置這麼大的塊佔用空間,主要是爲了減少磁盤的最小化尋址開銷,HDFS上的文件會被切割爲以塊大小爲單位的多個分塊,爲了保證數據的安全性,每個數據塊都會被複制到多個服務節點中進行備份(默認爲3個),通過應用程序也可以指定每個文件的副本數。如果發現一個塊不可用,系統會從其他地方讀取另一個副本塊。
4 NameNode 和 DataNodes
HDFS屬於master/slave架構,由一個名稱節點(NameNode)與多個數據節點(DataNodes)構成。
(1)NameNode:存放元數據(名稱,副本數、權限、塊列表......),負責名稱空間以及客戶端(client)的訪問
(2)DataNode:負責提供來自文件系統客戶端的讀取和寫入請求,並且定期向NameNode發送他們所存儲的塊的列表信息。
NameNode的元數據中主要由鏡像文件(fsimage)與編輯日誌文件(edits)組成,需要說明的是元數據中並沒有存儲每個數據塊所在的服務器節點,而是在啓動HDFS集羣的時候由每個DataNode節點自動上報數據信息給NameNode服務節點。
通過HDFS自帶的離線查看工具來查看鏡像文件與編輯日誌文件
(1)查看fsimage鏡像文件:$ hdfs oiv -p XML -i 鏡像文件 -o 輸出文件路徑
(1)查看edits日誌文件:$ hdfs oev -p XML -i 鏡像文件 -o 輸出文件路徑
5 NameNode的容錯機制
系統中NameNode是非常重要的,如果NameNode節點掛掉,或者NameNode的元數據毀壞,整個文件系統將無法正常使用,因此對NameNode的容錯機制非常重要,Hadoop提供了兩種保護措施。
(1)NameNode HA With QJM 或者 NameNode HA With NFS
(2)通過一個輔助節點及SecondaryNameNode來定期備份元數據
在NameNode失效後,爲了更加快速的切換到NameNode的正常服務狀態,一般會選擇第一種機制,第一種機制的具體實現細節後續文章會在做講解。