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








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