Hbase流程體系圖
![Hbase流程體系圖](http://static.javashuo.com/static/loading.gif)
Hbase 寫數據流程
- 一、 client 向 hregionserver 發送寫請求。
- 二、hregionserver 將數據寫到 hlog (write ahead log )。爲了數據的持久化和恢復。
- 三、 hregionserver 將數據寫到內存 (memstore)
- 四、 反饋 client 寫成功。
數據 flush 過程
- 一、 當 memstore 數據達到閾值(默認是 64M),將數據刷到硬盤,將內存中的數據刪除,同時刪除 hlog 中的歷史數據。
- 二、 並將數據存儲到 hdfs 中。
- 三、 在 hlog 中作標記點。
數據合併過程
- 一、 當數據達到 4 塊, hmaster 將數據塊加載到本地,進行合併
- 二、 當合並的數據超過 256M,進行拆分,將拆分後的 region 分配給不一樣的 hregionserver 管理
- 三、 當 hregionser 宕機後,將 和regionserver 上的 hlog 拆分,而後分配給不一樣的 hregionserver 加載,修改 .META。
- 四、 注意:hlog 會同步到 hdfs
Hbase 讀數據流程
- 一、 經過 zookeeper 和 -ROOT-.META。表定位 hregionserver 。
- 二、 數據從內存和硬盤合併後返回 client
- 三、 數據塊會緩存
hmaster 的職責
- 一、 管理用戶對 table 的增、刪、改、查等操做。
- 二、 記錄 region 在哪臺 HRegion Server 上
- 三、 在 Region Split 後,負責新 Region 的分配
- 四、 新機器加入時,管理 HRegion Server 的負載均衡,調整 Region 分佈
- 五、 在 HRegion Server 宕機後,負責失效 HRegion Server 上的 Region 遷移。
hmaster 的職責
- 一、 HRegion Server主要負責響應用戶I/O請求,向HDFS文件系統中讀寫數據,是HBASE中最核心的模塊。
- 二、 HRegion Server管理了不少table的分區,也就是region。
client職責
- 一、 HBASE Client使用HBASE的RPC機制與HMaster和RegionServer進行通訊
- 二、 管理類操做:Client與HMaster進行RPC;
- 三、 數據讀寫類操做:Client與HRegionServer進行RPC。
hbase依賴zookeeper
一、保存Hmaster的地址和backup-master地址緩存
hmaster:負載均衡
- a)管理HregionServer
- b)作增刪改查表的節點
- c)管理HregionServer中的表分配
二、保存表-ROOT-的地址
hbase默認的根表,檢索表。ide
三、HRegionServer列表
表的增刪改查數據。
和hdfs交互,存取數據。server
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 的基本原理,和使用命令就寫完了。blog