hbase架構原理
架構原理
1、 每個region由一個RegionServer負責,一個RegionServer負責多個region
2、 StandbyHMaster 是HMaster的一個備份,如果HMaster宕掉,Standby HMaster會變成HMaster
3、 主節點服務管理RegionServer HMaster功能:
協調資料庫元資料(例如:表)變化
監控RegionServer的負載均衡
失敗RegionServer重啟
分配region到RegionServer
儲存和管理regions
處理讀取/寫入請求
當region過多時,自動分割regions
表操作直接和客戶端連線
4、 Region:
HBase表被分割為多個region
每個region包含多行資料
Region包含region名字,開始rowkey和結束(按rowkey排序)
5、 HBase資料模型
(1)行健(rowkey):
行鍵是位元組陣列, 任何字串都可以作為行鍵;
表中的行根據行鍵進行排序,資料按照Row key的位元組序(byte order)排序儲存;
所有對錶的訪問都要通過行鍵 (單個RowKey訪問,或RowKey範圍訪問,或全表掃描)
每一個列簇儲存在一個或對個檔案
(2)列簇(Column key string=family:qualifier)
CF必須在表定義時給出
每個CF可以有一個或多個列成員(ColumnQualifier),列成員不需要在表定義時給出,新的列族成員可以隨後按需、動態加入
資料按ColumnFamily分開儲存.,HBase所謂的列式儲存就是根據ColumnFamily分開儲存(每一個ColumnFamily對應一個Store),這種設計非常適合於資料分析情形.
(3)時間戳(TimeStame)
每個Cell有多個版本,它們用時間戳區分.
(4)單元格(Cell)
Cell由行鍵,列族,時間戳唯一確定
Cell中的資料是沒有型別的全部以位元組碼的形式貯存.
(5)區域(region)
HBase自動把表水平(按RowKey)分成若干個區域(Region),每個Region會儲存表裡一段連續的資料.
剛開始表裡只有一個Region,隨著資料的不斷插入表,隨著Region的不斷增大,當到了每個閥值的時候,Region自動等分成兩個新的Region.
當table中的行不斷增多,就會有越來越多的region,這樣一張表就被儲存在多個Region上.
HRegion是HBase中分散式儲存和負載均衡的最小單位,最小單元表示不同的HRegion可以分佈在不同的HRegionServer上,但是一個Region不會拆分到多個Server上.
6、 定位一個cell的資料
表名——>列簇名——>行健——>列識別符號——>時間戳
7、 HBase讀取資料
Meta原始資料——>表名——>行健——>列識別符號——>時間戳
8、 HBase寫入資料
9、 HBase RowKey設計
HBase是根據Rowkey來進行檢索的,系統通過找到某個Rowkey所在的Region,然後將查詢資料的請求路由到該Region獲取資料
10、 HBase的檢索支援3種方式
(1) 通過單個Rowkey訪問,即按照某個Rowkey鍵值進行get操作,這樣獲取唯一一條記錄
(2) 即通過設定startRowKey和endRowKey,在這個範圍內進行掃描。這樣可以按指定的條件獲取一批記錄;
(3) 全表掃描,即直接掃描整張表中所有行記錄
11、 Rowkey設計原則
Rowkey長度設計原則:16位元組內
Rowkey雜湊原則:
Rowkey唯一原則
12、 HBase模式設計(表設計)
HBase沒有join概念
HBase Rowkey設計非常重要
HBase列簇在1~2個
13、 HBase模式設計例項
Student
Rowkey |
Column family |
|
info |
course |
|
Student_id(反轉) |
info:name info:gender info:age |
course:c1 course:c2 ….. |
course
Rowkey |
列簇(column family) |
|||
info:nane |
info:introduction |
info:teacher |
student |
|
Course_id(反轉) |
Cell |