1. 程式人生 > >hbase架構原理

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