項目構(gòu)建
Hadoop 1.0內(nèi)核主要由兩個分支組成:MapReduce和HDFS,眾所周知,這兩個系統(tǒng)的設(shè)計缺陷是單點故障,即MR的JobTracker和HDFS的NameNode兩個核心服務(wù)均存在單點問題,該問題在很長時間內(nèi)沒有解決,這使得Hadoop在相當(dāng)長時間內(nèi)僅適合離線存儲和離線計算。
令人欣慰的是,這些問題在Hadoop 2.0中得到了非常完整的解決。Hadoop 2.0內(nèi)核由三個分支組成,分別是HDFS、MapReduce和YARN,而Hadoop生態(tài)系統(tǒng)中的其他系統(tǒng),比如HBase、Hive、Pig等,均是基于這三個系統(tǒng)開發(fā)的。截止本文發(fā)布,Hadoop 2.0的這三個子系統(tǒng)的單點故障均已經(jīng)解決或者正在解決(Hadoop HA),本文將為大家介紹當(dāng)前的進度和具體的解決方案。
在正式介紹單點故障解決方案之前,先簡要回顧一下這三個系統(tǒng)(三個系統(tǒng)均采用簡單的master/slaves架構(gòu),其中master是單點故障)。
(1) HDFS:仿照google GFS實現(xiàn)的分布式存儲系統(tǒng),由NameNode和DataNode兩種服務(wù)組成,其中NameNode是存儲了元數(shù)據(jù)信息(fsp_w_picpath)和操作日志(edits),由于它是唯一的,其可用性直接決定了整個存儲系統(tǒng)的可用性;
(2)YARN:Hadoop 2.0中新引入的資源管理系統(tǒng),它的引入使得Hadoop不再局限于MapReduce一類計算,而是支持多樣化的計算框架。它由兩類服務(wù)組成,分別是ResourceManager和NodeManager,其中,ResourceManager作為整個系統(tǒng)的唯一組件,存在單點故障問題;
(3)MapReduce:目前存在兩種MapReduce實現(xiàn),分別是可獨立運行的MapReduce,它由兩類服務(wù)組成,分別是JobTracker和TaskTraker,其中JobTracker存在單點故障問題,另一個是MapReduce On YARN,在這種實現(xiàn)中,每個作業(yè)獨立使用一個作業(yè)跟蹤器(ApplicationMaster),彼此之間不再相互影響,不存在單點故障問題。本文提到的單點故障實際上是第一種實現(xiàn)中JobTracker的單點故障。
先說當(dāng)前Hadoop單點故障的解決進度,截止本文發(fā)布時,HDFS單點故障已經(jīng)解決,且提供了兩套可行方案;MapReduce單點故障(JobTracker)由CDH4(CDH4同時打包了MRv1和MRv2,這里的單點故障指的是MRv1的單點問題)解決,且已經(jīng)發(fā)布;YARN單點故障尚未解決,但方案已經(jīng)提出,由于解決方案借鑒了HDFS HA和MapReduce HA的實現(xiàn),因為將會很快得到解決。
總體上說,Hadoop中的HDFS、MapReduce和YARN的單點故障解決方案架構(gòu)是完全一致的,分為手動模式和自動模式,其中手動模式是指由管理員通過命令進行主備切換,這通常在服務(wù)升級時有用,自動模式可降低運維成本,但存在潛在危險。這兩種模式下的架構(gòu)如下。
【手動模式】
【自動模式】
在Hadoop HA中,主要由以下幾個組件構(gòu)成:
(1)MasterHADaemon:與Master服務(wù)運行在同一個進程中,可接收外部RPC命令,以控制Master服務(wù)的啟動和停止;
(2)SharedStorage:共享存儲系統(tǒng),active master將信息寫入共享存儲系統(tǒng),而standby master則讀取該信息以保持與active master的同步,從而減少切換時間。常用的共享存儲系統(tǒng)有zookeeper(被YARN HA采用)、NFS(被HDFS HA采用)、HDFS(被MapReduce HA采用)和類bookeeper系統(tǒng)(被HDFS HA采用)。
(3)ZKFailoverController:基于Zookeeper實現(xiàn)的切換控制器,主要由兩個核心組件構(gòu)成:ActiveStandbyElector和HealthMonitor,其中,ActiveStandbyElector負責(zé)與zookeeper集×××互,通過嘗試獲取全局鎖,以判斷所管理的master進入active還是standby狀態(tài);HealthMonitor負責(zé)監(jiān)控各個活動master的狀態(tài),以根據(jù)它們狀態(tài)進行狀態(tài)切換。。
(4)Zookeeper集群:核心功能通過維護一把全局鎖控制整個集群有且僅有一個active master。當(dāng)然,如果ShardStorge采用了zookeeper,則還會記錄一些其他狀態(tài)和運行時信息。
尤其需要注意的是,解決HA問題需考慮以下幾個問題:
(1)腦裂(brain-split):腦裂是指在主備切換時,由于切換不徹底或其他原因,導(dǎo)致客戶端和Slave誤以為出現(xiàn)兩個active master,最終使得整個集群處于混亂狀態(tài)。解決腦裂問題,通常采用隔離(Fencing)機制,包括三個方面:
共享存儲fencing:確保只有一個Master往共享存儲中寫數(shù)據(jù)。
客戶端fencing:確保只有一個Master可以響應(yīng)客戶端的請求。
Slave fencing:確保只有一個Master可以向Slave下發(fā)命令。
Hadoop公共庫中對外提供了兩種fenching實現(xiàn),分別是sshfence和shellfence(缺省實現(xiàn)),其中sshfence是指通過ssh登陸目標(biāo)Master節(jié)點上,使用命令fuser將進程殺死(通過tcp端口號定位進程pid,該方法比jps命令更準(zhǔn)確),shellfence是指執(zhí)行一個用戶事先定義的shell命令(腳本)完成隔離。
(2)切換對外透明:為了保證整個切換是對外透明的,Hadoop應(yīng)保證所有客戶端和Slave能自動重定向到新的active master上,這通常是通過若干次嘗試連接舊master不成功后,再重新嘗試鏈接新master完成的,整個過程有一定延遲。在新版本的Hadoop RPC中,用戶可自行設(shè)置RPC客戶端嘗試機制、嘗試次數(shù)和嘗試超時時間等參數(shù)。
為了印證以上通用方案,以MapReduce HA為例進行說明,在CDH4中,HA方案介紹可參考我的這篇文章:“CDH中JobTracker HA方案介紹”,架構(gòu)圖如下:
Hadoop 2.0 中 HDFS HA解決方案可閱讀文章:“Hadoop 2.0 NameNode HA和Federation實踐”,目前HDFS2中提供了兩種HA方案,一種是基于NFS共享存儲的方案,一種基于Paxos算法的方案Quorum Journal Manager(QJM),它的基本原理就是用2N+1臺JournalNode存儲EditLog,每次寫數(shù)據(jù)操作有大多數(shù)(>=N+1)返回成功時即認為該次寫成功,數(shù)據(jù)不會丟失了。目前社區(qū)正嘗試使用Bookeeper作為共享存儲系統(tǒng),具體可參考。HDFS-1623給出的HDFS HA架構(gòu)圖如下所示:
目前進度最慢的是YARN HA解決方案,該方案已經(jīng)文檔化,正在規(guī)范和開發(fā)中,具體可參考:https://issues.apache.org/jira/browse/YARN-149,總體上看,它的整體架構(gòu)與MapReduce HA和YARN HA的類似,但共享存儲系統(tǒng)采用的是Zookeeper。之所以采用Zookeeper這種輕量級“存儲系統(tǒng)”(需要注意的是,zookeeper設(shè)計目的并不是存儲,而是提供分布式協(xié)調(diào)服務(wù),但它的確可以安全可靠的存儲少量數(shù)據(jù)以解決分布式環(huán)境下多個服務(wù)之間的數(shù)據(jù)共享問題),是由于YARN的大部分信息可以通過NodeManager和ApplicationMaster的心跳信息進行動態(tài)重構(gòu),而ResourceManager本身只需記錄少量信息到Zookeeper上即可。
總體上講,HA解決的難度取決于Master自身記錄信息的多少和信息可重構(gòu)性,如果記錄的信息非常龐大且不可動態(tài)重構(gòu),比如NameNode,則需要一個可靠性與性能均很高的共享存儲系統(tǒng),而如果Master保存有很多信息,但絕大多數(shù)可通過Slave動態(tài)重構(gòu),則HA解決方法則容易得多,典型代表是MapReduce和YARN。從另外一個角度看,由于計算框架對信息丟失不是非常敏感,比如一個已經(jīng)完成的任務(wù)信息丟失,只需重算即可獲取,使得計算框架的HA設(shè)計難度遠低于存儲類系統(tǒng)。
Hadoop HA配置方法:
(1)HDFS HA:Hadoop 2.0 NameNode HA和Federation實踐
(2)MapReduce HA:Configuring JobTracker High Availability
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
文章標(biāo)題:Hadoop2.0中單點故障解決方案總結(jié)-創(chuàng)新互聯(lián)
新聞來源:http://jinyejixie.com/article0/ccedio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、外貿(mào)建站、電子商務(wù)、網(wǎng)站營銷、標(biāo)簽優(yōu)化、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容