溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Hbase 原理

發(fā)布時(shí)間:2020-07-28 06:10:50 來源:網(wǎng)絡(luò) 閱讀:2965 作者:SimplePoint 欄目:大數(shù)據(jù)

Hbase流程體系圖


Hbase 原理

Hbase 寫數(shù)據(jù)流程
  • 1、 client 向 hregionserver 發(fā)送寫請求。
  • 2、hregionserver 將數(shù)據(jù)寫到 hlog (write ahead log )。為了數(shù)據(jù)的持久化和恢復(fù)。
  • 3、 hregionserver 將數(shù)據(jù)寫到內(nèi)存 (memstore)
  • 4、 反饋 client 寫成功。
數(shù)據(jù) flush 過程
  • 1、 當(dāng) memstore 數(shù)據(jù)達(dá)到閾值(默認(rèn)是 64M),將數(shù)據(jù)刷到硬盤,將內(nèi)存中的數(shù)據(jù)刪除,同時(shí)刪除 hlog 中的歷史數(shù)據(jù)。
  • 2、 并將數(shù)據(jù)存儲到 hdfs 中。
  • 3、 在 hlog 中做標(biāo)記點(diǎn)。
數(shù)據(jù)合并過程
  • 1、 當(dāng)數(shù)據(jù)達(dá)到 4 塊, hmaster 將數(shù)據(jù)塊加載到本地,進(jìn)行合并
  • 2、 當(dāng)合并的數(shù)據(jù)超過 256M,進(jìn)行拆分,將拆分后的 region 分配給不同的 hregionserver 管理
  • 3、 當(dāng) hregionser 宕機(jī)后,將 和regionserver 上的 hlog 拆分,然后分配給不同的 hregionserver 加載,修改 .META。
  • 4、 注意:hlog 會同步到 hdfs
Hbase 讀數(shù)據(jù)流程
  • 1、 通過 zookeeper 和 -ROOT-.META。表定位 hregionserver 。
  • 2、 數(shù)據(jù)從內(nèi)存和硬盤合并后返回 client
  • 3、 數(shù)據(jù)塊會緩存
hmaster 的職責(zé)
  • 1、 管理用戶對 table 的增、刪、改、查等操作。
  • 2、 記錄 region 在哪臺 HRegion Server 上
  • 3、 在 Region Split 后,負(fù)責(zé)新 Region 的分配
  • 4、 新機(jī)器加入時(shí),管理 HRegion Server 的負(fù)載均衡,調(diào)整 Region 分布
  • 5、 在 HRegion Server 宕機(jī)后,負(fù)責(zé)失效 HRegion Server 上的 Region 遷移。
hmaster 的職責(zé)
  • 1、 HRegion Server主要負(fù)責(zé)響應(yīng)用戶I/O請求,向HDFS文件系統(tǒng)中讀寫數(shù)據(jù),是HBASE中最核心的模塊。
  • 2、 HRegion Server管理了很多table的分區(qū),也就是region。
client職責(zé)
  • 1、 HBASE Client使用HBASE的RPC機(jī)制與HMaster和RegionServer進(jìn)行通信
  • 2、 管理類操作:Client與HMaster進(jìn)行RPC;
  • 3、 數(shù)據(jù)讀寫類操作:Client與HRegionServer進(jìn)行RPC。
hbase依賴zookeeper

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

hmaster:

  • a)管理HregionServer
  • b)做增刪改查表的節(jié)點(diǎn)
  • c)管理HregionServer中的表分配

2、保存表-ROOT-的地址
hbase默認(rèn)的根表,檢索表。

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

Hbase 命令

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

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

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI