HBASE1 2的RIT 三 RIT產生詳解1

2021-10-05 11:25:10 字數 1135 閱讀 2701

本節詳細分析,hbase不同操作是怎麼產生rit的

region的狀態變遷是基於狀態機和zookeeper事件驅動的,其中,zookeeper的事件狀態詳見eventtype類。

原理:master首先改變記憶體狀態,寫在map

master在zookeeper註冊監聽事件

傳送操作請求regionserver

region完成操作

regionserver在zookeeper註冊監聽

mater通過事件更新記憶體狀態

針對hbase1.2.0版本原始碼分析, 繪製了rit的狀態中的assign詳細分析遷移的原理 

假設使用者傳送乙個assign操作,整個region的狀態流轉如圖所示[3]:

流程說明

1.客戶傳送assign請求。

2. hmaster先執行事件m_zk_region_offling

3更新regionstates,將該region的狀態改為pending_open,並在regionsintransition中插入一條記錄;

4. 傳送一條rpc命令給擁有該region的regionserver,責令其開啟該region

5. regionserver接收到hmaster傳送過來的命令之後,首先生成乙個rs_zk_region_opening事件,更新到zookeeper。

6.master監聽到zk節點變動之後更新regionstates,將該region的狀態改為opening;

7. regionserver執行真正的region開啟操作。

8. 完成之後生成事件rs_zk_region_opened,更新到zookeeper.

9.master監聽到zk節點變動之後更新regionstates,將該region的狀態改為open;

通過上訴分析可知,整個過程如果中間的某個步驟由於一些原因導致某個元件的狀態無法更新,會出現長期rit。

下節將討論其他操作是怎麼樣產生rit的,詳見:

HBASE1 2的RIT系列主題

由於hbase1.2的設計,導致hbase在生產很容易產生rit,一旦出現rit,會導致表相關的region不能提供服務,尤其是meta元資料表。怎麼樣快速處理rit,是研究的重點,本系列結合hbase1.2原始碼,將會對rit展開討論。rit的狀態都有哪些?那些操作會觸發rit?狀態在哪些元件轉移...

HBase學習 三 HBase的資料結構

hbase 資料庫中也有乙個表示唯一的鍵,這個唯一的鍵是 rowkey。rowkey 組成 hbase 中 rowkey 由任意字串組成,組成長度不超過 64kb 在實際應用中長度一般為10 100bytes,一般用到70 100bytes就能滿足需求,在hbase內部,rowkey儲存為位元組陣列...

Hbase架構的經典三提問

當向store寫入乙個修改值的時候,她並沒有直接刪除原資料增加新資料,store裡面其實是乙個記憶體 磁碟的混合體,記憶體 memstore 中存最新的資料,每次我們寫資料的時候,先寫入記憶體中,當記憶體滿了後再落盤到磁碟中成為乙個storefile,storefile再存於hdfs上。所以在記憶體...