Hadoop公共庫中對外提供了兩種fenching實(shí)現(xiàn),分別是sshfence和shellfence(缺省實(shí)現(xiàn)),其中sshfence是指通過ssh登陸目標(biāo)Master節(jié)點(diǎn)上,使用命令fuser將進(jìn)程殺死(通過tcp端口號定位進(jìn)程pid,該方法比jps命令更準(zhǔn)確),shellfence是指執(zhí)行一個用戶事先定義的shell命令(腳本)完成隔離。
(2)切換對外透明:為了保證整個切換是對外透明的,Hadoop應(yīng)保證所有客戶端和Slave能自動重定向到新的active master上,這通常是通過若干次嘗試連接舊master不成功后,再重新嘗試鏈接新master完成的,整個過程有一定延遲。在新版本的Hadoop RPC中,用戶可自行設(shè)置RPC客戶端嘗試機(jī)制、嘗試次數(shù)和嘗試超時時間等參數(shù)。
為了印證以上通用方案,以MapReduce HA為例進(jìn)行說明,在CDH4中,HA方案介紹可參考我的這篇文章: “CDH中JobTracker HA方案介紹”,架構(gòu)圖如下:
Hadoop 2.0 中 HDFS HA解決方案可閱讀文章: “Hadoop 2.0 NameNode HA和Federation實(shí)踐”,目前HDFS2中提供了兩種HA方案,一種是基于NFS共享存儲的方案,一種基于Paxos算法的方案 Quorum Journal Manager(QJM),它的基本原理就是用2N+1臺JournalNode存儲EditLog,每次寫數(shù)據(jù)操作有大多數(shù)(>=N+1)返回成功時即認(rèn)為該次寫成功,數(shù)據(jù)不會丟失了。目前社區(qū)正嘗試 使用Bookeeper作為共享存儲系統(tǒng),具體可參考。 HDFS-1623給出的HDFS HA架構(gòu)圖如下所示:
目前進(jìn)度最慢的是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的心跳信息進(jìn)行動態(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è)計難度遠(yuǎn)低于存儲類系統(tǒng)。
原創(chuàng)文章,轉(zhuǎn)載請注明: 轉(zhuǎn)載自 董的博客
本文鏈接地址: http://dongxicheng.org/mapreduce-nextgen/hadoop-2-0-ha/
作者: Dong,作者介紹: http://dongxicheng.org/about/
本博客的文章集合: http://dongxicheng.org/recommend/
原文地址:Hadoop 2.0中單點(diǎn)故障解決方案總結(jié), 感謝原作者分享。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com