HBase學習筆記


關鍵類:

HBaseAdmin 管理Hbase的,主要負責DDL操作

HTable 管理表中數據,主要負責DML操作

 

1、為了避免熱點,更多的建表方法

在Shell中:

 create 'tb_splits',{NAME=>'cf',VERSION=>3},{SPLITS=>['a','b','c']}
--直接創建多個region的table,每個region的startkey和endkey由參數依次指定,第一個region沒有開始startkey,最后一個沒有endkey
--rowkey參數的選擇必須有意義,才能實現均勻分布,否則分多個region無意義
--多個region可以分布在多個regionserver上,添加數據的時候數據可以均勻分布在region中,實現負載均衡

 

在Java中

hBaseAdmin.createTable(tableDescriptor,Bytes.toBytes(0L),Bytes.toBytes(100L),10);
hBaseAdmin.createTableAsync(tableDescriptor,keyValueArray);

2、原子操作

原子插入(compare-and-set)

hTable.checkAndPut(row,family,qualifier,value,put)

原子刪除(compare-and-delete)

hTable.checkAndDelete(row,family,qualifier,value,delete)

3、計數器:

用於實時收集信息,原子操作

在Shell下操作

incr 't1','20150226','daily:hits',1
-- t1 表名
--20150226 行健
-- daily是列族
--hits 是列,最后是值
get_counter 't1','row_key','daily:hits' 

在java中操作

hTable.incrementColumnValue(...)
hTable.increment(increment)

  

HBase的數據格式:

1、Region 存儲數據有三部分組成,包括HLog、MemStore、HStore

2、WAL(write-ahead-log),RegionServer共享一個HLog實例。

往region寫數據之前,先往HLog里面寫數據,同時往MemStore里面寫

HLog是為了保證事務,MemStore保證客戶端訪問速度

*當MemStore文件快滿的時候,會合並並寫StoreFile寫入HDFS;當StoreFile很多的時候,會合並合並為一個大文件

*HBase還有個存儲結構,LMS樹的文件會不斷合並;和一般的索引文件不同,索引一般用B+樹結構:寬度非常寬,深度很淺

HFile 是存儲數據最根本的,storefile是對hfile的簡單封裝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM