導(dǎo)致Hbase掛掉的場景
HMaster
HMaster會出現(xiàn)異常(執(zhí)行abort())停止的場景如下:
1.zk異常導(dǎo)致的master停止服務(wù)是最常見的場景,涉及操作包含但不限于以下:
a)Zk鏈接超時,超時時間通過zookeeper.session.timeout配置,默認(rèn)為3分鐘, 如果fail.fast.expired.active.master配置的值為false(默認(rèn)為false),則不會立即abort,而是會嘗試恢復(fù)zk的過期session;
b)在打開region后,需要從zk中刪除opened節(jié)點,如果zk有該節(jié)點,但是刪除失?。?br /> c)在split region過程中,從zk刪除split節(jié)點時;
d)Master節(jié)點改變時;
e)從zk中創(chuàng)建unassigned節(jié)點時;
f)在下線disabled的regoin時,從zk中刪除disabled的region如果發(fā)生zk異常;
g)還有很多操作zk的節(jié)點時如果出現(xiàn)異常。
2.在assign時,如果設(shè)置region為offlined狀態(tài),但是region之前的狀態(tài)不是closed或者offlined;
3.在assign時,如果無法從.META.表中讀取region信息;
4.把新的hbase集群加入到正在運(yùn)行的hbase集群時,如果zk的/hbase/unassigned節(jié)點沒有數(shù)據(jù);
5.使用線程池批量分配region時,如果出現(xiàn)未被捕獲的異常,實現(xiàn)方式如下:
6.在啟動master的服務(wù)線程時,出現(xiàn)了異常;
7.在hdfs中檢查hbase日志路徑時,發(fā)現(xiàn)了dead的server時,需從hdfs中讀出log,如果出現(xiàn)io異常需要檢查hdfs文件系統(tǒng),如果fsOk狀態(tài)為true,但是通過FSUtils工具類進(jìn)行檢查時出現(xiàn)io異常;
8.在校驗并且分配-ROOT-的region時,如果zk異常,或者其它異常(其它異常會重試10次),比如:“-ROOT- is onlined on the dead server”。
HRegionServer
HRegionServer會出現(xiàn)異常停止(執(zhí)行abort())服務(wù)的場景如下:
1.在讀寫hdfs時如果出現(xiàn)IOException異常,此時會發(fā)起hdfs的文件系統(tǒng)檢查(checkFileSystem)1.
2.Regionserver的服務(wù)線程出現(xiàn)了未捕獲異常;
3.在啟動HRegionServer時出現(xiàn)異常;
4.在進(jìn)行HLog回滾時,出現(xiàn)異常;
5.在flush memstore時,如果持久化失敗,會重啟RS,在重啟中把hlog的內(nèi)容重新加載到memstore;
6.出現(xiàn)zk異常,包括但不限于以下場景:
a)Zk鏈接超時,超時時間通過zookeeper.session.timeout配置,默認(rèn)為3分鐘,與master不同,如果zk操作不會重試;
b)啟動HRegionServer時出現(xiàn)KeeperException異常;
c)在進(jìn)行split操作時,如果出現(xiàn)異常會進(jìn)行回滾操作,在回滾過程中需要從zk中刪除region的spliting狀態(tài),如果刪除時出現(xiàn)KeeperException或者回滾的其它操作出現(xiàn)異常;
d)在打開region時,出現(xiàn)了KeeperException異常;
e)在進(jìn)行hbase集群復(fù)制時,很多與zk交互的操作出現(xiàn)KeeperException異常時均會導(dǎo)致abort;
7.在close region時,如果出現(xiàn)異常,比如:不能成功的flush memstore;
8.Flush memstore時,如果HLog發(fā)現(xiàn)該region已經(jīng)在flush則會強(qiáng)制終止JVM,采用的是Runtime.getRuntime().halt(1)方法,該方法不會執(zhí)行正常退出的關(guān)閉鉤子,從而不會flush RS的所有region,也不會遷移region,只有等待ZK的session超時后master才會發(fā)現(xiàn)該RS不可用,做遷移工作。
總結(jié)
Hbase掛掉的可能性有很多,主要由zk或者h(yuǎn)dfs的問題導(dǎo)致,因此zk、hdfs的可用對于hbase極其重要,關(guān)于zk:
1.zk如果停止了服務(wù)則在很多時候會導(dǎo)致master、rs掛掉,hbase集群基本上就失去了服務(wù)的能力,因此zk一定要是穩(wěn)定可靠的,當(dāng)client已經(jīng)于rs建立了鏈接,這時zk掛掉,如果不進(jìn)行split等小數(shù)與zk交互失敗會導(dǎo)致觸發(fā)rs的abort()的操作時rs還是可以提供服務(wù)的;
2.如果rs/master進(jìn)行了長時間的gc或者改動了服務(wù)器時間,導(dǎo)致出現(xiàn)zk的session超時會導(dǎo)致rs/master停止服務(wù),目前已經(jīng)出現(xiàn)了2次因為服務(wù)器時間變化導(dǎo)致hbase停止服務(wù)的事故;
3.別輕易人為改變zk的hbase節(jié)點數(shù)據(jù),master/rs在進(jìn)行很多操作時會比較依賴zk的數(shù)據(jù),如果發(fā)現(xiàn)不符合預(yù)期可能會導(dǎo)致master/rs停止服務(wù),尤其是master。
Master通過ZK知道RS是否可用,一般情況下RS在停止服務(wù)時均會正常退出,在正常退出時會從ZK中刪除/hbase/rs/$regionserver的節(jié)點,Master會監(jiān)聽該節(jié)點的被刪除,從而較快的(速度取決于所有region關(guān)閉時間)對該RS負(fù)責(zé)的region進(jìn)行重新分配,如果是強(qiáng)制退出,比如 kill -9或者出現(xiàn)HRegionServer掛掉的第8條時則只有等待ZK的session超時時才會刪除RS在ZK的節(jié)點(RS在ZK中添加節(jié)點時采用的是CreateMode.EPHEMERAL模式,該模式創(chuàng)建的節(jié)點會在session關(guān)閉時自動刪除),那時Master才會進(jìn)行重新assign。
Kill RS的進(jìn)程也是正常退出(不能使用kill -9強(qiáng)制退出),RS使用Runtime的addShutdownHook方法注冊了jvm關(guān)閉鉤子,在關(guān)閉鉤子中會執(zhí)行RS的退出邏輯,實際上hbase-daemon.sh的停止RS就是采用kill。
旅順口網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,旅順口網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為旅順口上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的旅順口做網(wǎng)站的公司定做!
網(wǎng)頁名稱:導(dǎo)致Hbase掛掉的場景
文章鏈接:http://jinyejixie.com/article32/ppjdsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站營銷、品牌網(wǎng)站制作、移動網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、網(wǎng)站改版
聲明:本網(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)