HDFS高可靠性是如何實(shí)現(xiàn)的
四個(gè)組件的可靠性與NN主備機(jī)制:

JN(日志節(jié)點(diǎn)),Zookeeper,NameNode主備部署(HA機(jī)制),數(shù)據(jù)存儲(chǔ)三副本;
修改:editlog實(shí)際上是NN節(jié)點(diǎn)生成上傳,JN什么都不做,只做存儲(chǔ)使用。
HDFS是大容量,高吞吐量、高容錯(cuò)的分布式文件存儲(chǔ)系統(tǒng),采用的是流式數(shù)據(jù)訪問的方式;
上面的因素決定了HDFS的兩個(gè)特點(diǎn):
適合場景:HDFS適合大容量和流式數(shù)據(jù)訪問場景;
不適合場景:隨機(jī)讀寫、大量小文件、低延遲讀取
TIPS:隨機(jī)讀寫與低延遲讀取是因?yàn)榱魇綌?shù)據(jù)訪問的特性決定,并且HDFS僅支持尾追加,不支持對數(shù)據(jù)進(jìn)行修改。
而大量小文件的主要原因是元數(shù)據(jù)過多,元數(shù)據(jù)保存在NN中,在運(yùn)行時(shí)同時(shí)加載在內(nèi)存中,并且NN在同一時(shí)間只有一臺(tái)在工作,會(huì)造成性能上的影響。
要點(diǎn):①HDFS的主要特點(diǎn):
流式數(shù)據(jù)訪問,多副本機(jī)制(default三副本),一次讀多次寫,僅允許尾添加,不允許修改的特點(diǎn)(WROM, write once read many)TIPS:流式數(shù)據(jù)訪問方式≠訪問流式數(shù)據(jù),而是一種從頭到尾的遍歷形式的數(shù)據(jù)訪問的方式,正是因?yàn)檫@種原因,修改文件中部數(shù)據(jù)會(huì)造成后部數(shù)據(jù)的連鎖效應(yīng),代價(jià)過大。
②HDFS底層文件約束:
HDFS本身是寄生在OS文件系統(tǒng)之上,所以對底層的基礎(chǔ)文件系統(tǒng)是有一定的約束要求,在華為hadoop結(jié)構(gòu)中,主要有Redhat、centOS和SuSe的部分版本有可用。
③主要節(jié)點(diǎn)與功能介紹:
NameNode:管理節(jié)點(diǎn),管理元數(shù)據(jù),同一時(shí)刻只有一個(gè)實(shí)例在工作,主備部署,在HDFS中,備并不僅僅是備份工作,除此之外還承擔(dān)元數(shù)據(jù)持久化的任務(wù),因?yàn)樵贖DFS中,元數(shù)據(jù)文件全部運(yùn)行在內(nèi)存中,在運(yùn)行管理元數(shù)據(jù)的同時(shí)再進(jìn)行元數(shù)據(jù)持久化會(huì)造成很大的壓力,因此在HDFS與別人不同的是,備NameNode負(fù)責(zé)完成元數(shù)據(jù)整理和持久化的任務(wù)。
擴(kuò)展知識(shí)點(diǎn):一個(gè)HDFS是控制節(jié)點(diǎn)還是數(shù)據(jù)絕點(diǎn)取決于改點(diǎn)運(yùn)行的服務(wù)是NameNode還是DataNode,而主備節(jié)點(diǎn)的選舉是依據(jù)配置了NameNode的節(jié)點(diǎn)向ZooKeeper注冊的先后順序,通常情況下備份節(jié)會(huì)利用ZooKeeper的特征創(chuàng)建臨時(shí)節(jié)點(diǎn),一旦臨時(shí)節(jié)點(diǎn)消失,則zooKeeper會(huì)通知備NameNode升任主NameNode,在這里還有一些特殊變化,因?yàn)榇藭r(shí)備NameNode升任為主也就失去了整理和持久化元數(shù)據(jù)的職責(zé),數(shù)據(jù)就會(huì)全部運(yùn)行在當(dāng)前單主的NameNode內(nèi)存中,帶來性能下降和安全隱患。
依照前面組件介紹所說,HDFS本身是需要底層OS的支持,所以在元數(shù)據(jù)的安全方面,建議采用物理Raid的方式(推薦Raid1)進(jìn)行部署。
DateNode:數(shù)據(jù)節(jié)點(diǎn),用于存放數(shù)據(jù)的節(jié)點(diǎn),數(shù)據(jù)節(jié)點(diǎn)有相應(yīng)的備份機(jī)制,默認(rèn)采用三副本,所以在實(shí)際部署中DataNode節(jié)點(diǎn)并不需要提供硬盤Raid級別的數(shù)據(jù)防護(hù)。
TIPS:既然是數(shù)據(jù)節(jié)點(diǎn),肯定是支持多實(shí)例部署,在HDFS的結(jié)構(gòu)中,default是以128M為一個(gè)block來存儲(chǔ)和管理的。
每個(gè)實(shí)例(HOST)只能有一個(gè)DataNode,每個(gè)DataNode可以有最多6個(gè)Data,每個(gè)Data可以掛載一塊邏輯磁盤,每個(gè)邏輯磁盤可以對應(yīng)一個(gè)硬盤或raid后空間。
JournalNode:主NameNode操作日志生成Editlog實(shí)時(shí)上傳給JN,JN多實(shí)例部署,每個(gè)JN數(shù)據(jù)是一樣的。JN負(fù)責(zé)存儲(chǔ)Editlog,備NameNode在觸發(fā)條件的時(shí)候下載相應(yīng)的editlog信息,并且在首次選舉為備份節(jié)點(diǎn)時(shí),當(dāng)Editlog大小達(dá)到64M或者歷經(jīng)60分鐘時(shí),會(huì)觸發(fā)備NN節(jié)點(diǎn)的數(shù)據(jù)整理動(dòng)作會(huì)從主NN節(jié)點(diǎn)上下載最初版的FsImage(僅首次下載),將Editlog和FsImage進(jìn)行一次整理合并操作。并生成FsImage.ckpt文件并進(jìn)行持久化操作,與此同時(shí)將該文件同步給主NN節(jié)點(diǎn),主NN節(jié)點(diǎn)在收到備NN節(jié)點(diǎn)的FsImage.ckpt文件后,重命名為Fsimage,對原有的Fsimage進(jìn)行替換,實(shí)現(xiàn)了主節(jié)點(diǎn)的元數(shù)據(jù)持久化操作。
ZKFC:與ZK之間通訊用組件,NN并不直接和Zookeeper通訊,而是使用ZKFC,ZKFC與NN節(jié)點(diǎn)一同部署
Client:提供HDFS的訪問方式
⑥HDFS文件存儲(chǔ)策略
文件存儲(chǔ)具有多副本的要求,默認(rèn)三副本(依照距離定義分布,本服務(wù)器為0,本機(jī)架其他服務(wù)器為2,其他機(jī)架為4)。
如果制定了策略則需要先符合文件存儲(chǔ)策略之后再進(jìn)行相應(yīng)的副本操作。
策略是集群范圍生效:
1. ? ?磁盤I/O性能分布;
2. ? ?標(biāo)簽優(yōu)先級,可以指定一層或者多層Tag,Tag之間是或的關(guān)系;
3. ? ?異構(gòu)服務(wù)器,依照服務(wù)器性能不同有所區(qū)分。
異構(gòu)服務(wù)區(qū)有較強(qiáng)的約束條件;首先要制定機(jī)架強(qiáng)制組,并且第一份副本必須要寫入機(jī)架強(qiáng)制組,如機(jī)架強(qiáng)制組無法寫入,則本次寫入失敗,剩余的副本優(yōu)先選擇本地,再到隨機(jī)的機(jī)架節(jié)點(diǎn)
⑦Colocation同分布
對于需要頻繁操作的文件,通過Group ID關(guān)聯(lián),使得頻繁訪問在同一實(shí)例內(nèi)運(yùn)行,減少東西流量,類似于VM的親密和排斥的部署關(guān)系,不過文件并無互斥的關(guān)系可供選擇。
Hadoop ZooKeeper
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。