Hbase 原理

Hbase流程體系圖


Hbase流程體系圖

Hbase 寫數據流程

  • 1、 client 向 hregionserver 發送寫請求。
  • 2、hregionserver 將數據寫到 hlog (write ahead log )。爲了數據的持久化和恢復。
  • 3、 hregionserver 將數據寫到內存 (memstore)
  • 4、 反饋 client 寫成功。

數據 flush 過程

  • 1、 當 memstore 數據達到閾值(默認是 64M),將數據刷到硬盤,將內存中的數據刪除,同時刪除 hlog 中的歷史數據。
  • 2、 並將數據存儲到 hdfs 中。
  • 3、 在 hlog 中做標記點。

數據合併過程

  • 1、 當數據達到 4 塊, hmaster 將數據塊加載到本地,進行合併
  • 2、 當合並的數據超過 256M,進行拆分,將拆分後的 region 分配給不同的 hregionserver 管理
  • 3、 當 hregionser 宕機後,將 和regionserver 上的 hlog 拆分,然後分配給不同的 hregionserver 加載,修改 .META。
  • 4、 注意:hlog 會同步到 hdfs

Hbase 讀數據流程

  • 1、 通過 zookeeper 和 -ROOT-.META。表定位 hregionserver 。
  • 2、 數據從內存和硬盤合併後返回 client
  • 3、 數據塊會緩存

hmaster 的職責

  • 1、 管理用戶對 table 的增、刪、改、查等操作。
  • 2、 記錄 region 在哪臺 HRegion Server 上
  • 3、 在 Region Split 後,負責新 Region 的分配
  • 4、 新機器加入時,管理 HRegion Server 的負載均衡,調整 Region 分佈
  • 5、 在 HRegion Server 宕機後,負責失效 HRegion Server 上的 Region 遷移。

hmaster 的職責

  • 1、 HRegion Server主要負責響應用戶I/O請求,向HDFS文件系統中讀寫數據,是HBASE中最核心的模塊。
  • 2、 HRegion Server管理了很多table的分區,也就是region。

client職責

  • 1、 HBASE Client使用HBASE的RPC機制與HMaster和RegionServer進行通信
  • 2、 管理類操作:Client與HMaster進行RPC;
  • 3、 數據讀寫類操作:Client與HRegionServer進行RPC。

hbase依賴zookeeper

1、保存Hmaster的地址和backup-master地址

hmaster:

  • a)管理HregionServer
  • b)做增刪改查表的節點
  • c)管理HregionServer中的表分配

2、保存表-ROOT-的地址
hbase默認的根表,檢索表。

3、HRegionServer列表
表的增刪改查數據。
和hdfs交互,存取數據。

Hbase 命令

名稱 命令表達式
創建表 create '表名', '列族名1','列族名2','列族名N'
查看所有表 list
描述表 describe ‘表名’
判斷表存在 exists '表名'
判斷是否禁用啓用表 is_enabled '表名'; is_disabled ‘表名’
添加記錄 put ‘表名’, ‘rowKey’, ‘列族 : 列‘ ,'值'
查看記錄rowkey下的所有數據 get '表名','rowKey'
查看錶中的記錄總數 count '表名'
獲取某個列族 get '表名','rowkey','列族'
獲取某個列族的某個列 get '表名','rowkey','列族:列’
刪除記錄 delete ‘表名’ ,‘行名’ , ‘列族:列'
刪除整行 deleteall '表名','rowkey'
刪除一張表 先要屏蔽該表,才能對該表進行刪除。第一步 disable ‘表名’ ,第二步 drop '表名'
清空表 truncate '表名'
查看所有記錄 scan "表名"
查看某個表某個列中所有數據 scan "表名" , {COLUMNS=>'列族名:列名'}
更新記錄 就是重寫一遍,進行覆蓋,hbase沒有修改,都是追加

到這裏 hbase 的基本原理,和使用命令就寫完了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章