存儲(chǔ)水平伸縮-DFS

RAID將數(shù)據(jù)分片后在多塊磁盤(pán)上并發(fā)進(jìn)行讀寫(xiě)訪問(wèn),從而提高了存儲(chǔ)容量、加快了訪問(wèn)速度,并通過(guò)數(shù)據(jù)的冗余校驗(yàn)提高了數(shù)據(jù)的可靠性,即使某塊磁盤(pán)損壞也不會(huì)丟失數(shù)據(jù)。將RAID的設(shè)計(jì)理念擴(kuò)大到整個(gè)分布式服務(wù)器集群,就產(chǎn)生了分布式文件系統(tǒng),Hadoop分布式文件系統(tǒng)的核心原理就是如此。

HDFS是在一個(gè)大規(guī)模分布式服務(wù)器集群上,對(duì)數(shù)據(jù)分片后進(jìn)行并行讀寫(xiě)及冗余存儲(chǔ)。因?yàn)镠DFS可以部署在一個(gè)比較大的服務(wù)器集群上,集群中所有服務(wù)器的磁盤(pán)都可供HDFS使用,所以整個(gè)HDFS的存儲(chǔ)空間可以達(dá)到PB級(jí)容量。

image

從圖中你可以看到HDFS的關(guān)鍵組件有兩個(gè),一個(gè)是DataNode,一個(gè)是NameNode。

  • DataNode
    負(fù)責(zé)文件數(shù)據(jù)的存儲(chǔ)和讀寫(xiě)操作,HDFS將文件數(shù)據(jù)分割成若干數(shù)據(jù)塊(Block),每個(gè)DataNode存儲(chǔ)一部分?jǐn)?shù)據(jù)塊,這樣文件就分布存儲(chǔ)在整個(gè)HDFS服務(wù)器集群中。

  • NameNode
    負(fù)責(zé)整個(gè)分布式文件系統(tǒng)的元數(shù)據(jù)(MetaData)管理,也就是文件路徑名、數(shù)據(jù)塊的ID以及存儲(chǔ)位置等信息,相當(dāng)于操作系統(tǒng)中文件分配表(FAT)的角色。

HDFS的高可用設(shè)計(jì)

  • 1.數(shù)據(jù)存儲(chǔ)故障容錯(cuò)
    磁盤(pán)介質(zhì)在存儲(chǔ)過(guò)程中受環(huán)境或者老化影響,其存儲(chǔ)的數(shù)據(jù)可能會(huì)出現(xiàn)錯(cuò)亂。HDFS的應(yīng)對(duì)措施是,對(duì)于存儲(chǔ)在DataNode上的數(shù)據(jù)塊,計(jì)算并存儲(chǔ)校驗(yàn)和(CheckSum)。在讀取數(shù)據(jù)的時(shí)候,重新計(jì)算讀取出來(lái)的數(shù)據(jù)的校驗(yàn)和,如果校驗(yàn)不正確就拋出異常,應(yīng)用程序捕獲異常后就到其他DataNode上讀取備份數(shù)據(jù)。

  • 2.磁盤(pán)故障容錯(cuò)
    如果DataNode監(jiān)測(cè)到本機(jī)的某塊磁盤(pán)損壞,就將該塊磁盤(pán)上存儲(chǔ)的所有BlockID報(bào)告給NameNode,NameNode檢查這些數(shù)據(jù)塊還在哪些DataNode上有備份,通知相應(yīng)的DataNode服務(wù)器將對(duì)應(yīng)的數(shù)據(jù)塊復(fù)制到其他服務(wù)器上,以保證數(shù)據(jù)塊的備份數(shù)滿足要求。

  • 3.DataNode故障容錯(cuò)
    DataNode會(huì)通過(guò)心跳和NameNode保持通信,如果DataNode超時(shí)未發(fā)送心跳,NameNode就會(huì)認(rèn)為這個(gè)DataNode已經(jīng)宕機(jī)失效,立即查找這個(gè)DataNode上存儲(chǔ)的數(shù)據(jù)塊有哪些,以及這些數(shù)據(jù)塊還存儲(chǔ)在哪些服務(wù)器上,隨后通知這些服務(wù)器再?gòu)?fù)制一份數(shù)據(jù)塊到其他服務(wù)器上,保證HDFS存儲(chǔ)的數(shù)據(jù)塊備份數(shù)符合用戶設(shè)置的數(shù)目,即使再出現(xiàn)服務(wù)器宕機(jī),也不會(huì)丟失數(shù)據(jù)。

  • 4.NameNode故障容錯(cuò)
    NameNode是整個(gè)HDFS的核心,記錄著HDFS文件分配表信息,所有的文件路徑和數(shù)據(jù)塊存儲(chǔ)信息都保存在NameNode,如果NameNode故障,整個(gè)HDFS系統(tǒng)集群都無(wú)法使用;如果NameNode上記錄的數(shù)據(jù)丟失,整個(gè)集群所有DataNode存儲(chǔ)的數(shù)據(jù)也就沒(méi)用了。

所以,NameNode高可用容錯(cuò)能力非常重要。NameNode采用主從熱備的方式提供高可用服務(wù),請(qǐng)看下圖。

image

集群部署兩臺(tái)NameNode服務(wù)器,一臺(tái)作為主服務(wù)器提供服務(wù),一臺(tái)作為從服務(wù)器進(jìn)行熱備,兩臺(tái)服務(wù)器通過(guò)ZooKeeper選舉,主要是通過(guò)爭(zhēng)奪znode鎖資源,決定誰(shuí)是主服務(wù)器。而DataNode則會(huì)向兩個(gè)NameNode同時(shí)發(fā)送心跳數(shù)據(jù),但是只有主NameNode才能向DataNode返回控制信息。

正常運(yùn)行期間,主從NameNode之間通過(guò)一個(gè)共享存儲(chǔ)系統(tǒng)shared edits來(lái)同步文件系統(tǒng)的元數(shù)據(jù)信息。當(dāng)主NameNode服務(wù)器宕機(jī),從NameNode會(huì)通過(guò)ZooKeeper升級(jí)成為主服務(wù)器,并保證HDFS集群的元數(shù)據(jù)信息,也就是文件分配表信息完整一致。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 專(zhuān)業(yè)名詞 塊存儲(chǔ)、文件存儲(chǔ)、對(duì)象存儲(chǔ) 塊存儲(chǔ) 就好比硬盤(pán)一樣, 直接掛在到主機(jī), 一般用于主機(jī)的直接存儲(chǔ)空間和數(shù)據(jù)...
    rochy_he閱讀 11,817評(píng)論 0 37
  • 以HDFS為例,介紹分布式文件系統(tǒng)。 文件系統(tǒng) 文件系統(tǒng)的功能 文件的按名存?。ɑ竟δ埽?文件目錄的建立和維護(hù)(...
    zealscott閱讀 374評(píng)論 0 0
  • 一、數(shù)據(jù)集群 1. 數(shù)據(jù)集中集群 1)主機(jī)如何將數(shù)據(jù)復(fù)制給備機(jī) 2)備機(jī)如何檢測(cè)主機(jī)狀態(tài) 3)主機(jī)故障后,如...
    hedgehog1112閱讀 1,871評(píng)論 0 1
  • 內(nèi)容:1.高可用存儲(chǔ)架構(gòu):雙機(jī)架構(gòu)2.高可用存儲(chǔ)架構(gòu):集群和分區(qū)3.如何設(shè)計(jì)計(jì)算高可用架構(gòu)本文來(lái)自于《極客時(shí)間》-...
    小螺絲釘cici閱讀 666評(píng)論 0 0
  • 一、分布式存儲(chǔ) 分布式系統(tǒng)是大量普通的PC通過(guò)網(wǎng)絡(luò)互連,對(duì)外提供一個(gè)整體的存儲(chǔ)服務(wù) 分布式存儲(chǔ)系統(tǒng)有以下的特性:可...
    陳超同學(xué)閱讀 2,545評(píng)論 0 0

友情鏈接更多精彩內(nèi)容