HDFS原理
HDFS全稱Hadoop Distributed File System,是hadoop中的一個分佈式文件系統,與傳統的文件系統不同,HDFS主針對的是大數據情景下的文件存儲。
1 區別:
普通文件系統:數據塊/磁盤塊*n = 文件系統塊的大小
(512KB) (若n<1,則n=1)
HDFS:block(64MB)獨立的存儲單元,文件可以大於磁盤大小,也可以存在不同的磁盤上。定位較快。
2 優劣
1、高容錯性 2、適合批處理 3、適合大數據處理 4、流式文件訪問 5、可構建在廉價機器上
1、低延時數據訪問 2、小文件存儲 3、併發寫入、文件隨機修改
3 框架
client:文件切分->block;與NN交互;與DN交互;
NameNode:master,在內存中。管理block,處理client請求
DataNode:slave,在磁盤中。存儲實際數據塊,讀寫。
SecondaryNameNode:冷備份。分擔NN工作量,合併fsiamge和fsedits,恢復NN
4 讀取和寫入
5 容錯處理
1、NameNode Federation
不同的NameNode管理不同的目錄,共用DN,這樣一部分NN掛掉以後不影響其他部分
2、NNHA
NameNode是唯一一個對文件元數據和file-block映射負責的地方, 當它掛了之後,包括MapReduce在內的作業都無法進行讀寫。當NameNode故障時,常規的做法是使用元數據備份重新啓動一個NameNode。採用HA的HDFS集羣配置兩個NameNode,分別處於Active和Standby狀態。當Active NameNode故障之後,Standby接過責任繼續提供服務,用戶沒有明顯的中斷感覺。一般耗時在幾十秒到數分鐘。
1、基於NFS方案:Active NN與Standby NN通過NFS實現共享數據,但如果Active NN與NFS之間或Standby NN與NFS之間,其中一處有網絡故障的話,那就會造成數據同步問題。
2、基於QJM方案:
ActiveNameNode會把日誌文件寫入JournalNode,StandbyNameNode從JN中讀取日誌文件和fsimage合併。而DN需要向主從節點都進行彙報。用zookeeper決定主從關係。