首頁技術(shù)文章正文

HDFS的高可用架構(gòu)是怎樣工作的?

更新時(shí)間:2020-11-12 來源:黑馬程序員 瀏覽量:

  在HDFS分布式文件系統(tǒng)中,NameNode是系統(tǒng)的核心節(jié)點(diǎn),它存儲了各類元數(shù)據(jù)信息,并負(fù)責(zé)管理文件系統(tǒng)的命名空間和客戶端對文件的訪問。但是,在Hadoop1.0版本中,NameNode只有一個(gè),一旦這個(gè)NameNode發(fā)生故障,就會導(dǎo)致整個(gè)Hadoop集群不可用,也就是發(fā)生了單點(diǎn)故障問題。

  為了解決單點(diǎn)故障問題,Hadoop2.0中的HDFS中增加了對高可用的支持。在高可用的HDFS集群中,通常有兩臺或者兩臺以上的機(jī)器充當(dāng)NameNode,在任意時(shí)間內(nèi),都要保證至少有一臺機(jī)器處于活動(Active)狀態(tài),一臺機(jī)器處于備用(Standby)狀態(tài)。處于活動狀態(tài)的NameNode負(fù)責(zé)處理客戶端請求,而處于備用狀態(tài)的NameNode則處于“隨時(shí)待命”狀態(tài)。一旦處于活動狀態(tài)NameNode節(jié)點(diǎn)發(fā)生故障,那么處于備用狀態(tài)的NameNode會立即接管它的任務(wù)并開始處理客戶端請求,保證業(yè)務(wù)不會出現(xiàn)明顯中斷,不影響系統(tǒng)的正常對外服務(wù)。接下來,通過一張圖來描述HDFS的高可用架構(gòu),如圖1所示。


1605261811406_33.png

  圖1 HDFS的高可用架構(gòu)

  圖1所示的高可用架構(gòu)中,共包含了兩個(gè)NameNode,其中一個(gè)處于活動狀態(tài),一個(gè)處于備用狀態(tài),活躍狀態(tài)的NameNode將更新的數(shù)據(jù)寫入共享存儲系統(tǒng)中,備用狀態(tài)的NameNode會一直監(jiān)聽共享存儲系統(tǒng),一旦發(fā)現(xiàn)有新的數(shù)據(jù),就會立即從共享存儲系統(tǒng)中將這些數(shù)據(jù)加載到自己內(nèi)存中,從而保證與活躍狀態(tài)的數(shù)據(jù)同步。

  Zookeeper是一種在HDFS高可用集群中集中提供自動故障轉(zhuǎn)移功能的服務(wù),它為每個(gè)NameNode都分配了一個(gè)故障恢復(fù)控制器(Zookeeper Failover Controller,簡稱ZKFC),該控制器用于監(jiān)控NameNode的健康狀態(tài),并通過“心跳”方式定期和Zookeeper保持通信。一旦NameNode發(fā)生故障,Zookeeper會通知備用狀態(tài)的NameNode啟動,使其成為活動狀態(tài)去處理客戶端請求,從而實(shí)現(xiàn)高可用。


分享到:
在線咨詢 我要報(bào)名
和我們在線交談!