根據(jù)Maneesh Varshney的漫畫改編,以簡潔易懂的漫畫形式講解HDFS的存儲機制與運行原理座柱。
1迷帜、構成部分
HDFS存儲相關角及功能如下:
Client:客戶端,系統(tǒng)使用者色洞,調用HDFS API操作文件;與NN交互獲取文件元數(shù)據(jù);與DN交互進行數(shù)據(jù)讀寫戏锹。
Namenode:元數(shù)據(jù)節(jié)點,是系統(tǒng)唯一的管理者火诸。負責元數(shù)據(jù)的管理;與client交互進行提供元數(shù)據(jù)查詢;分配數(shù)據(jù)存儲節(jié)點等锦针。
Datanode:數(shù)據(jù)存儲節(jié)點,負責數(shù)據(jù)塊的存儲與冗余備份;執(zhí)行數(shù)據(jù)塊的讀寫操作等。
2伞插、寫數(shù)據(jù)過程
HDFS中的存儲單元是block割粮。文件通常被分成64或128M一塊的數(shù)據(jù)塊進行存儲。與普通文件系統(tǒng)不同的是媚污,在HDFS中舀瓢,如果一個文件大小小于一個數(shù)據(jù)塊的大小,它是不需要占用整個數(shù)據(jù)塊的存儲空間的耗美。
3京髓、讀取數(shù)據(jù)過程
HDFS采用的是“一次寫入多次讀取”的文件訪問模型。一個文件經(jīng)過創(chuàng)建商架、寫入和關閉之后就不需要改變堰怨。這一假設簡化了數(shù)據(jù)一致性問題,并且使高吞吐量的數(shù)據(jù)訪問成為可能蛇摸。
4备图、容錯第一部分:故障類型及其檢測方法(namenode 故障、網(wǎng)絡故障和臟數(shù)據(jù)問題)
5赶袄、容錯第二部分:讀寫容錯
6揽涮、容錯第三部分:dataNode 失效
7、備份規(guī)則
數(shù)據(jù)塊的第一個副本優(yōu)先放在寫入數(shù)據(jù)塊的客戶端所在的節(jié)點上饿肺,但是如果這個客戶端上的數(shù)據(jù)節(jié)點空間不足或者是當前負載過重蒋困,則應該從該數(shù)據(jù)節(jié)點所在的機架中選擇一個合適的數(shù)據(jù)節(jié)點作為本地節(jié)點。
如果客戶端上沒有一個數(shù)據(jù)節(jié)點的話敬辣,則從整個集群中隨機選擇一個合適的數(shù)據(jù)節(jié)點作為此時這個數(shù)據(jù)塊的本地節(jié)點雪标。
HDFS的存放策略是將一個副本存放在本地機架節(jié)點上,另外兩個副本放在不同機架的不同節(jié)點上溉跃。
這樣集群可在完全失去某一機架的情況下還能存活村刨。同時,這種策略減少了機架間的數(shù)據(jù)傳輸撰茎,提高了寫操作的效率烹困,因為數(shù)據(jù)塊只存放在兩個不同的機架上,減少了讀取數(shù)據(jù)時需要的網(wǎng)絡傳輸總帶寬乾吻。這樣在一定程度上兼顧了數(shù)據(jù)安全和網(wǎng)絡傳輸?shù)拈_銷。
8拟蜻、結束語