自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

disable table失敗,運(yùn)維人員該如何處理?

運(yùn)維 系統(tǒng)運(yùn)維
相信每一個(gè)維護(hù)hbase集群的運(yùn)維人員一定碰到過(guò)disable失敗,陷入無(wú)窮的"Region has been PENDING_CLOSE for too long..."狀態(tài),此時(shí)沒(méi)有什么好的辦法處理。經(jīng)常需要重啟集群。

    相信每一個(gè)維護(hù)hbase集群的運(yùn)維人員一定碰到過(guò)disable失敗,陷入無(wú)窮的"Region has been PENDING_CLOSE for too long..."狀態(tài),此時(shí)沒(méi)有什么好的辦法處理。經(jīng)常需要重啟集群。 
    這個(gè)問(wèn)題產(chǎn)生的原因非常討厭,經(jīng)過(guò)一段時(shí)間的分析和驗(yàn)證,得到了根本原因。要理解它,必須從disable的原理說(shuō)起: 

  1.   disable線程是一個(gè)DisableTableHandler類,我們看它的handleDisableTable()方法,在while循環(huán)中先獲取table的regions列表,然后調(diào)用BulkDisabler的bulkAssign()方法,等待bulkAssign()返回為true時(shí)則結(jié)束
  2.   在bulkAssign()方法中啟動(dòng)線程池,然后等待線程池超時(shí),超時(shí)時(shí)間由hbase.bulk.assignment.waiton.empty.rit控制
  3.   在每個(gè)線程中,先從regions collection中得到regions列表,然后通知rs來(lái)處理該region,并且把該region放入RIT列表中,表示該region正在進(jìn)行處理
  4.   rs處理完region以后,將該region狀態(tài)在zk上置為closing,此時(shí)master得到通知
  5.   master將這個(gè)region從RIT列表中刪除,并從regions列表中刪除。

     注意以上最后一步,當(dāng)master把它從RIT中刪除以后,還有短暫的時(shí)間這個(gè)region還在regions列表中,此時(shí)另一個(gè)線程拿到了這個(gè)region,并且此時(shí)這個(gè)region不處于RIT狀態(tài)保護(hù),于是另一個(gè)線程開始重復(fù)以上過(guò)程,而前一個(gè)線程己經(jīng)把它從collection中刪除了,于是后一個(gè)線程再也無(wú)法完成closing事件。直到RIT超時(shí)(默認(rèn)30秒)。 

    于是有兩個(gè)修改辦法: 
     1、縮短hbase.bulk.assignment.waiton.empty.rit這個(gè)時(shí)間(默認(rèn)10分鐘,it's too long...),讓它重新進(jìn)行一輪disable,此時(shí)會(huì)先把RIT的region都處理掉再繼續(xù),這樣多幾次嘗試總會(huì)成功的。 
     2、修改代碼:(https://issues.apache.org/jira/secure/attachment/12487669/HBASE-4064_branch90V2.patch) 

     Java代碼 : 
  1. Index: src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java    
  2. ===================================================================    
  3. --- src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (revision 1150529)    
  4. +++ src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (working copy)    
  5. @@ -767,14 +767,15 @@    
  6.     * @param regionInfo    
  7.     */    
  8.    public void regionOffline(final HRegionInfo regionInfo) {    
  9. +    // remove the region plan as well just in case.    
  10. +    clearRegionPlan(regionInfo);    
  11. +    setOffline(regionInfo);    
  12. +        
  13.      synchronized(this.regionsInTransition) {    
  14.        if (this.regionsInTransition.remove(regionInfo.getEncodedName()) != null) {    
  15.          this.regionsInTransition.notifyAll();    
  16.        }    
  17.      }    
  18. -    // remove the region plan as well just in case.    
  19. -    clearRegionPlan(regionInfo);    
  20. -    setOffline(regionInfo);    
  21.    }   


    即在以上步驟5時(shí),先從regions列表中刪除,再清除它的RIT狀態(tài)。 
    方法2己經(jīng)測(cè)試成功,方法1更簡(jiǎn)單,各位被這個(gè)問(wèn)題困擾的同學(xué)可以一試。

原文鏈接:koven2049.iteye.com

 

責(zé)任編輯:黃丹 來(lái)源: nosqlfan
相關(guān)推薦

2019-05-09 15:31:23

攻擊服務(wù)器安全

2021-03-01 07:31:53

消息支付高可用

2013-01-11 15:42:40

IT運(yùn)維云計(jì)算

2023-03-09 12:21:38

2013-03-29 09:15:08

IT運(yùn)維運(yùn)維人員運(yùn)維工程師

2018-11-15 08:43:11

交換機(jī)硬件故障軟件故障

2018-03-27 16:23:53

運(yùn)維AI智能

2014-04-23 17:11:57

運(yùn)維人員訪問(wèn)出錯(cuò)

2010-02-23 17:12:01

WCF字符串

2022-04-12 07:32:40

引擎模式Spring策略模式

2025-03-31 08:04:50

MySQLCPU內(nèi)存

2014-11-27 10:07:43

IT運(yùn)維

2013-03-21 17:17:34

2010-01-28 10:09:27

IT運(yùn)維人員

2015-06-23 14:24:03

2024-09-23 08:04:45

MYSQL數(shù)據(jù)存儲(chǔ)

2020-03-19 09:32:10

數(shù)據(jù)庫(kù)運(yùn)維技術(shù)

2013-01-23 14:40:06

IT運(yùn)維RIILCIO

2024-08-29 08:54:35

2023-02-02 08:56:25

線程池線程submit
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)