hbase簡介
hbase架構
client、zookeeper、hmaster(管理許多hregionserver)、hregionserver
hregionserver:多個hregion(乙個或多個hregion負責一張表)、hlog(操作日誌)
hregion:多個store(乙個或多個store乙個列族)
store:mem store(本地快取區,記憶體)、storefile
底層:資料先寫入mem store,當mem store滿了,就flush到磁碟,形成storefile檔案,其中storefile檔案以hfile格式儲存在hdfs上。
原先是乙個hregion負責乙個表,當hregion達到閾值,則會切分為兩個hregion。有可能hregion會分給另乙個hregionserver以防止資料傾斜。
hbase shell
put 'table','rowkey','columnfamily:qualiter','value'
get 'table','rowkey',
hbase資料結構
rowkey
記錄的主鍵,rowkey可以是任意字串,按字典序排序儲存,設計rowkey時,要充分排序儲存這個特性,將經常一起讀取的行儲存到一起。
column family
列族,包含多個列。必須在使用表前定義。
cell
由確定的單元
timestamp
時間戳,版本通過時間戳來索引。
hbase讀寫資料流程
讀資料流程
client連線zk獲取元資料資訊(.meta.表,meta-region-server表),即獲取元資料所在的regionserver在**。
zk返回客戶端查詢元資料所在的regionserver位置。
客戶端請求訪問所在的regionserver
regionserver同意訪問
客戶端傳送讀請求
regionserver返回結果(先記憶體後磁碟)
寫資料流程
客戶端傳送請求給zk,獲取meta表所在regionserver
zk返回meta表所在的regionserver
獲取regionserver的meta表
返回元資料所在的regionserver
向regionserver傳送寫資料請求
寫入hlog,wal
hregion根據hlog寫入mem store
反饋客戶端,寫入成功
flush過程
當memstore資料達到閾值,將資料刷到硬碟,將記憶體中資料刪除,同時刪除hlog中的歷史資料
並將資料儲存到hdfs
資料合併過程
資料塊達到4塊,hmaster觸發合併操作,region將資料塊載入到本地,進行合併
合併資料超過256m,進行拆分,拆分後的region分配給不同regionserver
當hregionserver宕機後,將hlog拆分,分配給不同hregionserver,同時修改.meta.表
HBase基礎知識
hbase的主要客戶端介面是由org.apache.hadoop.hbase.client包中的htable類提供的,通過該類,使用者可以完成向hbase儲存和檢索資料,以及刪除無效資料之類的操作。所有修改資料的操作都保證了行級別的原子性,寫操作中涉及的列的數目不會影響該行資料的原子性,行原子性會同...
HBase基礎知識
hdfs myha01 hbase hbase.cluster.distributed true hbase.zookeeper.quorum hadoop02 2181,hadoop03 2181,hadoop04 2181 htable表 table htabledescriptor列族 col...
HBase基礎知識
hbase官網 學習 hbase是乙個建立在hadoop檔案系統之上的分布式的 面向列的開源資料庫,源於google的一篇 bigtable 乙個結構化資料的分布式儲存系統 hbase是google bigtable的開源實現,它利用hadoop hdfs作為其檔案儲存系統,利用hadoop map...