您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“HDFS Namenode是如何工作的”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
HDFS Namenode是如何工作的?
HDFS客戶端通過(guò)被稱之為Namenode單服務(wù)器節(jié)點(diǎn)執(zhí)行文件系統(tǒng)原數(shù)據(jù)操作,同時(shí)DataNode會(huì)與其他DataNode進(jìn)行通信并復(fù)制數(shù)據(jù)塊以實(shí)現(xiàn)冗余,這樣單一的DataNode損壞不會(huì)導(dǎo)致集群的數(shù)據(jù)丟失。
但NameNode出現(xiàn)故障的損失確是無(wú)法容忍的。NameNode主要職責(zé)是跟蹤文件如何被分割成文件塊、文件塊又被哪些節(jié)點(diǎn)存儲(chǔ),以及分布式文件系統(tǒng)的整體運(yùn)行狀態(tài)是否正常等。但如果NameNode節(jié)點(diǎn)停止運(yùn)行的話將會(huì)導(dǎo)致數(shù)據(jù)節(jié)點(diǎn)無(wú)法通信,客戶端無(wú)法讀取和寫(xiě)入數(shù)據(jù)到HDFS,實(shí)際上這也將導(dǎo)致整個(gè)系統(tǒng)停止工作。
The HDFS Namenode is a single point of failure (SPOF)
Facebook也深知“Namenode-as-SPOF”所帶來(lái)問(wèn)題的嚴(yán)重性,所以Facebook希望建立一套系統(tǒng)已破除“Namenode-as-SPOF”帶來(lái)的隱患。但在了解這套系統(tǒng)之前,首先來(lái)看一下Facebook在使用和部署HDFS都遇到了哪些問(wèn)題。
Facebook數(shù)據(jù)倉(cāng)庫(kù)的使用
在Facebook的數(shù)據(jù)倉(cāng)庫(kù)中部署著***的HDFS集群,數(shù)據(jù)倉(cāng)庫(kù)的使用情況是傳統(tǒng)的Hadoop MapReduce工作負(fù)載——在大型集群中一小部分運(yùn)行MapReduce批處理作業(yè)
因?yàn)榧悍浅}嫶?,客戶端和眾多DataNode節(jié)點(diǎn)與NameNode節(jié)點(diǎn)傳輸海量的原數(shù)據(jù),這導(dǎo)致NameNode的負(fù)載非常沉重。而來(lái)自CPU、內(nèi)存、磁盤(pán)和網(wǎng)絡(luò)帶來(lái)的壓力也使得數(shù)據(jù)倉(cāng)庫(kù)集群中NameNode高負(fù)載狀況屢見(jiàn)不鮮。在使用過(guò)程中Facebook發(fā)現(xiàn)其數(shù)據(jù)倉(cāng)庫(kù)中由于HDFS引發(fā)的故障占總故障率的41%。
HDFS NameNode是HDFS中的重要組成部分,同時(shí)也是整個(gè)數(shù)據(jù)倉(cāng)庫(kù)中的重要組成部分。雖然高可用的NameNode只可以預(yù)防數(shù)據(jù)倉(cāng)庫(kù)10%的計(jì)劃外停機(jī),不過(guò)消除NameNode對(duì)于SPOF來(lái)說(shuō)可謂是重大的勝利,因?yàn)檫@使得Facebook可執(zhí)行預(yù)訂的硬件和軟件回復(fù)。事實(shí)上,F(xiàn)acebook預(yù)計(jì)如果解決NameNode可消除集群50%的計(jì)劃停機(jī)時(shí)間。
那么高可用性NameNode是什么樣子的?它將如何工作?讓我們來(lái)看一下高度可用性NameNode的圖表。
在此結(jié)構(gòu)中,客戶端可與Primary NameNode與Standby NameNode通信,同樣眾多DataNode
也具備給Primary NameNode與Standby NameNode發(fā)送block reports的能力。實(shí)質(zhì)上Facebook所研發(fā)的AvatarNode就是具備高可用NameNode的解決方案。
Avatarnode:具備NameNode故障轉(zhuǎn)移的解決方案
為了解決單NameNode節(jié)點(diǎn)的設(shè)計(jì)缺陷,大約在兩年前Facebook開(kāi)始在內(nèi)部使用AvatarNode工作。
同時(shí)AvatarNode提供了高可用性的NameNode以及熱故障切換和回滾功能,目前Facebook已經(jīng)將AvatarNode貢獻(xiàn)到了開(kāi)源社區(qū)。經(jīng)過(guò)無(wú)數(shù)次的測(cè)試和Bug修復(fù),AvatarNode目前已在Facebook***的Hadoop數(shù)據(jù)倉(cāng)庫(kù)中穩(wěn)定運(yùn)行。在這里很大程度上要感謝Facebook的工程師Dmytro Molkov。
當(dāng)發(fā)生故障時(shí),AvatarNode的兩個(gè)高可用NameNode節(jié)點(diǎn)可手動(dòng)故障轉(zhuǎn)移。AvatarNode將現(xiàn)有的NameNode代碼打包并放置在Zookeeper層。
AvatarNode的基本概念如下:
具備Primary NameNode與Standby NameNode
當(dāng)前Master主機(jī)名保存在ZooKeeper之中
改進(jìn)的DataNode發(fā)送block reports到Primary NameNode與Standby NameNode
改進(jìn)的HDFS客戶端將在每個(gè)事物開(kāi)始之前對(duì)Zookeeper進(jìn)行檢查,如果失敗會(huì)轉(zhuǎn)移到另外的事務(wù)之中。同時(shí)如果AvatarNode故障轉(zhuǎn)移出現(xiàn)在寫(xiě)入的過(guò)程中,AvatarNode的機(jī)制將允許保證完整的數(shù)據(jù)寫(xiě)入。
或許有人會(huì)Facebook這一解決方案的名字感到好奇,這是因?yàn)镕acebook的Hadoop工程師Dhruba Borthakur來(lái)到公司時(shí)正好是James Cameron《阿凡達(dá)》電影熱映時(shí)間。(我們應(yīng)該感到慶幸,如果是1998年的話或許應(yīng)該叫TitanicNode了)。
AvatarNode經(jīng)受住了Facebook內(nèi)部最苛刻的工作環(huán)境,未來(lái)Facebook將繼續(xù)大幅度改善AvatarNode的可靠性和HDFS集群的管理性。并整合與一般高可用性框架的整合,還將實(shí)現(xiàn)無(wú)人值守、自動(dòng)化與安全故障轉(zhuǎn)移等特性。
Facebook已將自身使用的Hadoop與AvatarNode解決方案托管到GitHub。感興趣的朋友可下載研究。當(dāng)然不止Facebook在試圖解決Hadoop的缺陷,MapR和Cloudera的產(chǎn)品也具備相似的能力。
“HDFS Namenode是如何工作的”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。