hbase region分配,RS下線處理

2021-06-21 09:27:56 字數 1811 閱讀 3030

上面在

rs啟動部分已經提到過

,rs在

zk中的位址註冊為

session

過期自動清理的路徑

(ephemeral)。

在master

中通過regionservertracker對rs

進行監控, 當

rs在zk的

session

過期時間內沒有向

zk傳送心跳。表示

rs已經下線

,會觸發

regionservertracker.nodedeleted

public

void

nodedeleted(string

path)

從regionservertracker.onlineservers

列表中移出此

server

remove(sn

); 通過servermanager.expireserver

對server

執行下線操作。

首先從servermanager.onlienservers

列表中移出此

server

,同時把

server

新增到deadservers

列表中。

檢查是否是

clustershutdown

,如果是,不做

rs的下線處理,否則執行下面流程。 檢查

server

中是否包含

metaregion,

如果包含

metaregion,

通過metaservershutdownhandler

處理下線操作

否則通過

servershutdownhandler

處理下線操作。

this.

servermanager

.expireserver(sn

); }

} servershutdownhandleruser region

的重新分配流程: 1.

通過hbase.master.distributed.log.replay

配置是否分布式日誌重播

,預設為

false 2.

通過hbase.master.log.replay.wait.region.timeout

配置logreplay

的等待超時時間

,預設為

15000ms 3.

檢查是否包含

metaregion,

此處不分析此部分**。 4.

得到metaregion

的路徑,並通過

metareader

從meta

中得到下線的

rs的所有

regions

列表。

5.執行日誌的

split

處理,不分析。

if(

this.

shouldsplithlog

)elseam

.getregionstates

().logsplit

(servername);

6.通過

assignmentmanager.assign(list)

重新分配所有的

region.

Hbase region查詢過程

hbase的table是該region切分的,client操作乙個row的時候,如何知道這個row對應的region是在哪台region server上呢?這裡有個region location過程。主要涉及到2張系統表,root meta.其結構見圖 在zookeeper的 hbase root ...

HBase Region 拆分與合併

region 自動拆分 hbase region 的自動拆分有 6 種觸發策略,如下 regionsplitpolicy 自動拆分策略的使用hbase.regionserver.region.split.policy org.apache.hadoop.hbase.regionserver.incr...

Hbase region空洞修復工具

眾所周知,hbase 中隨著某個table 數量的增多必然會 成多個region,這些region 中的start key 和 end key 首位相連組成乙個閉環.如下圖所示 在表健康的時候可以用hbck工具來掃瞄整個表.結果當然是健康的狀態 hbase hbck details summary ...