-root-表結構
.meta.行記錄結構
現在假設我們要從table2裡面查詢一條rowkey是rk10000的資料。那麼我們應該遵循以下步驟:
1. 從.meta.表裡面查詢哪個region包含這條資料。
2. 獲取管理這個region的regionserver位址。
3. 連線這個regionserver, 查到這條資料。
系統如何找到某個row key (或者某個 row key range)所在的region
bigtable 使用三層類似b+樹的結構來儲存region位置。
第一層: 儲存zookeeper裡面的檔案,它持有root region的位置。
第二層:root region是.meta.表的第乙個region其中儲存了.meta.表其它region的位置。通過root region,我們就可以訪問.meta.表的資料。
第三層: .meta.表它是乙個特殊的表,儲存了hbase中所有資料表的region 位置資訊。
說明:
(1) root region永遠不會被split,保證了最需要三次跳轉,就能定位到任意region 。
(2).meta.表每行儲存乙個region的位置資訊,row key 採用表名+表的最後一行編碼而成。
(3) 為了加快訪問,.meta.表的全部region都儲存在記憶體中。
(4) client會將查詢過的位置資訊儲存快取起來,快取不會主動失效,因此如果client上的快取全部失效,則需要進行最多6次網路來回,才能定位到正確的region(其中三次用來發現快取失效,另外三次用來獲取位置資訊)。
region定位流程:
Hbase讀寫流程和定址機制
1 client通過 zookeeper 的排程,向 regionserver 發出寫資料請求,在 region 中寫資料。2 資料被寫入 region 的memstore 直到memstore 達到預設閾值。3 memstore中的資料被 flush 成乙個storefile 4 隨著 store...
Hbase的讀寫定址過程
1.hbase的寫入流程 regionserver寫入wal檔案 在將操作寫入metastore之前,會將操作先寫入到wal檔案中。wal檔案的是順序儲存操作記錄的,所有每次新操作直接追加到regionserver對應的wal檔案尾部即可。regionserver寫入metastore 將操作寫入到...
大資料學習之路50 hbase的定址機制原理解析
每個region server管理著許多的region,而集群中又有許多的region server,假如我們要查詢一條資料的話,又如何知道我們要查詢的那條資料在哪個region server的哪個region上呢?當然我們也可以採用hdfs的namenode機制,記錄每個檔案有哪些block,這些...