1. 程式人生 > >HBase-讀寫流程及JavaAPI

HBase-讀寫流程及JavaAPI

1、讀寫流程

1.1、HBase 讀資料流程

1) HRegionServer 儲存著 meta 表以及表資料,要訪問表資料,首先 Client 先去訪問 zookeeper,從 zookeeper 裡面獲取 meta 表所在的位置資訊,即找到這個 meta 表在哪個 HRegionServer 上儲存著。

2) 接著 Client 通過剛才獲取到的 HRegionServer 的 IP 來訪問 Meta 表所在的HRegionServer,從而讀取到 Meta,進而獲取到 Meta 表中存放的元資料。

3) Client 通過元資料中儲存的資訊,訪問對應的 HRegionServer,然後掃描所在 HRegionServer 的 Memstore 和 Storefile 來查詢資料。

4) 最後 HRegionServer 把查詢到的資料響應給 Client。

1.2、HBase 寫資料流程

1) Client 也是先訪問 zookeeper,找到 Meta 表,並獲取 Meta 表資訊。

2) 確定當前將要寫入的資料所對應的 RegionServer 伺服器和 Region。

3) Client 向該 RegionServer 伺服器發起寫入資料請求,然後 RegionServer 收到請求並響應。

4) Client 先把資料寫入到 HLog,以防止資料丟失。

5) 然後將資料寫入到 Memstore。

6) 如果 Hlog 和 Memstore 均寫入成功,則這條資料寫入成功。在此過程中,如果 Memstore 達到閾值,會把 Memstore 中的資料 flush 到 StoreFile 中。

7) 當 Storefile 越來越多,會觸發 Compact 合併操作,把過多的 Storefile 合併成一個大的 Storefile。當 Storefile 越來越大,Region 也會越來越大,達到閾值後,會觸發 Split 操作, 將 Region 一分為二。

2、JavaAPI

2.1、新建maven工程,在pom.xml中新增以下以來。

2.2、編寫 HBaseAPI

1) 首先需要獲取 Configuration 物件:

2) 判斷表是否存在:

3) 建立表:

4) 刪除表:

5) 向表中插入資料:

6) 刪除多行資料:

7) 得到所有資料:

8) 得到某一行所有資料:

9) 獲取某一行指定“列族:列”的資料: