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 的基本原理,和使用命令就寫完了。