HBase是一個高性能、列存儲、可伸縮、實時讀寫的分布式存儲系統(tǒng),同樣運行在HDFS之上。
與Hive不同的是,HBase能夠在數(shù)據(jù)庫上實時運行,而不是跑MapReduce任務(wù),適合進行大數(shù)據(jù)的實時查詢。 畫像系統(tǒng)中每天在Hive里跑出的結(jié)果集數(shù)據(jù)可同步到HBase數(shù)據(jù)庫,用于線上實時應(yīng)用的場景。
下面介紹幾個基本概念:
·row key:用來表示唯一一行記錄的主鍵,HBase的數(shù)據(jù)是按照 row key的字典順序進行全局排列的。訪問HBase中的行只有3種方 式:
·通過單個row key訪問;
·通過row key的正則訪問;
·全表掃描。
由于HBase通過rowkey對數(shù)據(jù)進行檢索,而rowkey由于長度限制的因素不能將很多查詢條件拼接在rowkey中,因此HBase無法像關(guān)系數(shù)據(jù)庫那樣根據(jù)多種條件對數(shù)據(jù)進行篩選。一般地,HBase需建立 二級索引來滿足根據(jù)復(fù)雜條件查詢數(shù)據(jù)的需求。
Rowkey設(shè)計時需要遵循三大原則:
·唯一性原則:rowkey需要保證唯一性,不存在重復(fù)的情況。在 畫像中一般使用用戶id作為rowkey。
·長度原則:rowkey的長度一般為10-100bytes。
·散列原則:rowkey的散列分布有利于數(shù)據(jù)均衡分布在每個 RegionServer,可實現(xiàn)負(fù)載均衡。 ·columns family:指列簇,HBase中的每個列都?xì)w屬于某個列 簇。列簇是表的schema的一部分,必須在使用表之前定義。
劃分 columns family的原則如下:
·是否具有相似的數(shù)據(jù)格式;
·是否具有相似的訪問類型。
常用的增刪改查命令如下。
1)創(chuàng)建一個表,指定表名和列簇名: create '<table name>','<column family>'
2)掃描表中數(shù)據(jù),并顯示其中的10條記錄: scan '<table name>',{LIMIT=>10}
3)使用get命令讀取數(shù)據(jù): get '<table name>','row1'
4)插入數(shù)據(jù): put '<table name>','row1','<colfamily:colname>','<value>'
5)更新數(shù)據(jù):put '<table name>','row ','Column family:column name','new value'
6)在刪除表之前先將其禁用,然后刪除: disable '<table name>' drop '<table name>'








暫無數(shù)據(jù)