偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

disable table失敗,運維人員該如何處理?

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

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

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

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

    于是有兩個修改辦法: 
     1、縮短hbase.bulk.assignment.waiton.empty.rit這個時間(默認(rèn)10分鐘,it's too long...),讓它重新進行一輪disable,此時會先把RIT的region都處理掉再繼續(xù),這樣多幾次嘗試總會成功的。 
     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時,先從regions列表中刪除,再清除它的RIT狀態(tài)。 
    方法2己經(jīng)測試成功,方法1更簡單,各位被這個問題困擾的同學(xué)可以一試。

原文鏈接:koven2049.iteye.com

 

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

2019-05-09 15:31:23

攻擊服務(wù)器安全

2013-01-11 15:42:40

IT運維云計算

2021-03-01 07:31:53

消息支付高可用

2013-03-29 09:15:08

IT運維運維人員運維工程師

2023-03-09 12:21:38

2018-03-27 16:23:53

運維AI智能

2018-11-15 08:43:11

交換機硬件故障軟件故障

2014-04-23 17:11:57

運維人員訪問出錯

2010-01-28 10:09:27

IT運維人員

2014-11-27 10:07:43

IT運維

2013-03-21 17:17:34

2010-02-23 17:12:01

WCF字符串

2022-04-12 07:32:40

引擎模式Spring策略模式

2015-06-23 14:24:03

2013-01-23 14:40:06

IT運維RIILCIO

2020-03-19 09:32:10

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

2025-03-31 08:04:50

MySQLCPU內(nèi)存

2024-09-23 08:04:45

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

2024-08-29 08:54:35

2023-02-02 08:56:25

線程池線程submit
點贊
收藏

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