本篇文章為大家展示了企業(yè)是怎樣解決HDFS單點(diǎn)問(wèn)題的,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)公司是專(zhuān)業(yè)的榆社網(wǎng)站建設(shè)公司,榆社接單;提供網(wǎng)站制作、做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行榆社網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
前言
在早期Hadoop剛出來(lái)的時(shí)候是沒(méi)有解決HDFS單點(diǎn)問(wèn)題的,這就意味著當(dāng)NameNode的服務(wù)器宕機(jī)了就會(huì)導(dǎo)致整個(gè)集群癱瘓,這是非常危險(xiǎn)的于是在Hadoop不斷的更新下提出了Hadoop HA來(lái)解決NameNode單點(diǎn)問(wèn)題,接下來(lái)我們就來(lái)聊一聊。
解決HDFS單點(diǎn)問(wèn)題解決方案 解決HDFS點(diǎn)單問(wèn)題其實(shí)可以部署兩個(gè)NameNode,但是真正對(duì)外服務(wù)只有一個(gè),部署兩個(gè)NameNode那他們之間的元數(shù)據(jù)信息是不是需要共享元數(shù)據(jù)信息呀,不然當(dāng)其中一個(gè)NameNode掛掉了元數(shù)據(jù)信息沒(méi)有同步不就會(huì)有問(wèn)題。
根據(jù)appche提出的解決方案目前有三種解決方案如下
方案一、目錄共享
目錄共享是在appche社區(qū)中提出但是現(xiàn)在沒(méi)有引用,目錄共享也是一個(gè)單點(diǎn)問(wèn)題,如果當(dāng)目錄共享掛掉了是不是也會(huì)導(dǎo)致HDFS掛掉。所以就被一些企業(yè)拋棄了。
方案二、使用JournalNode方案
我們使用JN來(lái)保存元數(shù)據(jù)信息就不會(huì)造成單點(diǎn)問(wèn)題,JN也是一個(gè)集群,我們一般部署JN一般會(huì)選擇基數(shù)例如3,5,7,9等。JN有一個(gè)政策只要存活的節(jié)點(diǎn)大于二分之一就是一個(gè)正常的服務(wù)。
注意:我們不要為了解決NameNode的單點(diǎn)問(wèn)題選擇的的組件也是單點(diǎn)問(wèn)題,這個(gè)根本還是沒(méi)有解決。
JN中的信息都是一樣的,那為什么也是其中的一個(gè)NameNode就是寫(xiě)數(shù)據(jù)其中一個(gè)就是讀取數(shù)據(jù)那?
其實(shí)NameNode也是有角色之分的寫(xiě)的為action讀為standby,在高可用的架構(gòu)中只有一個(gè)NameNode真正對(duì)外服務(wù), 用戶(hù)也只會(huì)對(duì)action的NameNode進(jìn)行打交道,舉個(gè)理解:假設(shè)我們?cè)诠ぷ髦杏?個(gè)領(lǐng)導(dǎo)(平級(jí)的)我們?nèi)フ?qǐng)假其中一個(gè)領(lǐng)導(dǎo)同意其中一個(gè)領(lǐng)導(dǎo)不同意那這個(gè)假到底修還是不修那?這不就亂套了嗎?也就是在高可用架構(gòu)中同一時(shí)間只有一個(gè)說(shuō)的算。
方案三、使用zookeeper方案
其實(shí)企業(yè)中也有好多使用zookeeper來(lái)帶代替了。我們來(lái)想一想JN解決了什么問(wèn)題,不是就數(shù)據(jù)的一致性和單點(diǎn)故障我們?cè)谙胂雤ookeepr是不是也有,于是企業(yè)中就把zookeeper的源碼改了改就使用了這個(gè)方案。
總體架構(gòu)
以上的解決方案是不是可以解決了NameNode單點(diǎn)問(wèn)題,假設(shè)在凌晨的時(shí)候action的NameNode掛掉了是不是要進(jìn)行切換我們是不是需要人工去切換。是不是切換不及時(shí)就到導(dǎo)致整個(gè)集群不可用。接下來(lái)我實(shí)現(xiàn)自動(dòng)切換。
兩個(gè)NameNode啟動(dòng)成功后都會(huì)去zookeeper注冊(cè)自己zookeeper中會(huì)有一把鎖那個(gè)NameNode注冊(cè)成功了就是action當(dāng)其他的NameNode在去注冊(cè)是發(fā)現(xiàn)已經(jīng)被注冊(cè)了就變成了standby。
每個(gè)NameNode都部署了ZKFC 來(lái)監(jiān)控NameNode的情況當(dāng)action的NameNode發(fā)生故障時(shí)ActionZKF通過(guò)zookeeper刪除臨時(shí)的zNode (釋放鎖)StandBy狀態(tài)下的ZKF訂閱了這個(gè)臨時(shí)的zNode的變換,若zNode消失,StandBy狀態(tài)的ZKFC立刻通過(guò)standby NameNode。StandByNameNode遠(yuǎn)程登錄actionNameNode執(zhí)行kill-9 actionNameNode。StandByNameNode通知StandByZkfc去zookeeper上注冊(cè)zNode,注冊(cè)成功轉(zhuǎn)換為action狀態(tài)。這樣就實(shí)現(xiàn)了自己轉(zhuǎn)換。
上述內(nèi)容就是企業(yè)是怎樣解決HDFS單點(diǎn)問(wèn)題的,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。