架構視角:什么業(yè)務場景用Hbase魂务?

要想非常明確什么場景下用Hbase集币,那么我們來先了解下Hbase的主要核心特性考阱,那么在什么業(yè)務場景下用Hbase,就比較清晰了鞠苟!

Hbase是一種在Hadoop之上的NoSQL的Key/vale數據庫乞榨,底層依靠HDFS進行數據存儲。

一当娱、Hbase核心特性

海量數據存儲

面對互聯網應用的海量數據吃既,傳統(tǒng)關系型數據庫比如mysql,一般單表不會超過一千萬跨细,并且單表字段數量也一般不會超過100個鹦倚,否則性能急劇下降。

但基于Hbase的設計理念與存儲原理冀惭,Hbase單表可以有百億行震叙、百萬列掀鹅,在橫向和縱向兩個維度所支持的數據量級都非常巨大,在列上其實并沒有數量的限制媒楼。

Hbase可支撐PB級數據存儲乐尊,即支持的記錄數達萬億以上。

所以根據業(yè)務需求划址,當表需要非常大時扔嵌,可考慮選型Hbase。
如果最多只是上億條記錄并且列不是特別大的話夺颤,沒有必要放入hbase中痢缎,ES和mongodb都能輕松搞定。

面向列存儲

Hbase的數據在表中是按照列進行存儲的(列簇)拂共,可動態(tài)增加列牺弄,這樣在只查詢少數幾個字段的時候,不需要全表掃描宜狐,能極大提高查詢效率势告。

存儲記錄的多個版本

Hbase的每一個列的數據存儲有多個版本,比如地理位置列抚恒、天氣溫度列等咱台,可能有多次變更,所以該列可以有多個版本俭驮。Hbase會記錄數據所有的歷史版本回溺,在特定應用場景中非常有用。后面將會具體提到混萝。

列的稀疏性

為空的列并不占用存儲空間遗遵,表可以設計的非常稀疏。不必像關系型數據庫那樣需要預先知道所有列名然后再進行null填充逸嘀。

彈性伸縮/可擴展性

Hbase底層是依賴HDFS進行數據存儲與查詢的车要,由于HDFS的高可用性與極強的擴展性,所以Hbase一樣具備這樣的能力崭倘。

當數據量劇增翼岁,需要擴充磁盤空間時,只需要動態(tài)增加HDFS的datanode節(jié)點即可司光,非常方便琅坡。

數據高可靠性

Hbase本身寫入高可靠性特性,保證數據寫入的時候不會因為集群異常而導致寫入數據丟失残家。內存中沒有寫入磁盤的數據會記錄在相應的日志文件中榆俺,集群恢復后會獲取日志中的數據,保證數據不丟失。

Hbase底層使用HDFS谴仙,本身數據也有多個副本迂求。這種副本機制,保證了在集群節(jié)點出現故障后晃跺,數據不會丟失。

高性能

Hbase的Region切分毫玖、主鍵索引掀虎、緩存機制等特性,使得Hbase在海量數據下具備一定的隨機讀取性能付枫,該性能針對Rowkey的查詢能夠到達毫秒級別烹玉。

Hbase能夠達到準實時查詢,在百億行百萬列的情況下阐滩,查詢速度能達到百毫秒以內二打;

底層的LSM數據結構和RowKey有序排列等架構上的獨特設計,使得Hbase寫入性能也非常高掂榔,可支持千萬級高并發(fā)继效。

HBase 寫入速度快是因為數據并不是真的立即落盤,而是先寫入內存装获,隨后異步刷入HFile瑞信。所以在客戶端看來,寫入速度很快穴豫。

HBase從自身讀寫性能對比而言凡简,是一種讀比寫慢的數據庫。

以上精肃,初步介紹了Hbase的核心特性秤涩,接下來我們看看它適合的業(yè)務場景。

二司抱、適合的業(yè)務場景

寫密集型應用筐眷,每天寫入量巨大,而相對讀數量較小的應用

比如互聯網公司的社交軟件的歷史消息状植,大型系統(tǒng)的各種日志等浊竟。

Facebook用Hbase進行社交信息的存儲、查詢與分析津畸,主要存儲在線消息振定,每天數據量近百億,每月數據量超過200T肉拓。

基于HBase后频,Facebook可以很方便地橫向擴展服務規(guī)模,提供給數百萬用戶。該系統(tǒng)每天處理數百億條事件卑惜, HBase讀寫比基本在1:1膏执,吞吐量達到150w QPS。

此外露久,米聊歷史數據更米,消息push系統(tǒng)等多個重要應用系統(tǒng)都建立在HBase基礎之上。

網易的哨兵監(jiān)控系統(tǒng)毫痕,云信歷史數據征峦,日志歸檔數據等一系列重要應用底層都由HBase提供服務。

京東用Hbase存儲賣家操作日志消请,即幾十萬商家時時刻刻進行的各種操作栏笆。以便進行分析,并且可以保證商家可以精確查詢自己的各種操作臊泰。賣家操作日志的特點是:數據量大蛉加、實時性強、增多查少缸逃。

此外针饥,互聯網公司還需要收集和存儲海量用戶的操作行為,比如轉發(fā)察滑、評論和點贊打厘,通過這些行為來分析用戶的特征,形成用戶畫像贺辰,精準投放廣告户盯,提升廣告收入。

Hbase非常適合收集這種海量用戶的交互數據(每天數十億)饲化,并已經成功地應用在這種場合莽鸭,它可以增量捕獲第一手點擊流和用戶交互數據,然后用不同處理方式(MapReduce是其中一種)來處理數據(清理吃靠、裝飾硫眨、使用數據)。在這種公司巢块,你會發(fā)現很多HBase案例礁阁。

HBase只支持基于rowkey的查詢,對于HBase來說族奢,單條記錄或者小范圍的查詢是可以接受的姥闭,大范圍的查詢由于分布式的原因,可能在性能上有點影響越走。

并且不支持多條件復雜查詢棚品,不支持二級索引靠欢。

但當你面對每天數十億數據,數據量接近PB級時铜跑,如果也只是通過rowkey去查數據门怪,那么對于上PB級的數據,都非常適合用Hbase來查詢锅纺,性能也是非常高的掷空。

因此,Hbase適合做海量數據(億萬條記錄)的最底層數據源囤锉。

海量數據源都存在Hbase中拣帽,把可搜索的字段存到ES/Solr中作為二級索引,提供搜索服務嚼锄,業(yè)務系統(tǒng)用時,先從ES中搜索出記錄的rowkey蔽豺,再根據rowkey查Hbase即可区丑。

對性能和可靠性要求非常高的應用

由于HBase本身沒有單點故障,可用性非常高修陡。 數據量較大沧侥,而且增長量無法預估的應用,HBase支持在線擴展魄鸦,即使在一段時間內數據量呈井噴式增長宴杀,也可以通過HBase橫向擴展來滿足功能。

需要存儲歷史記錄場景

當業(yè)務需求拾因,需要持續(xù)記錄用戶的歷史記錄信息時旺罢,比如你想要存儲用戶的地址和喜好,這當然可以做成結構化SQL绢记。但是用戶把家搬到上海了扁达,那么以前在北京的地址要update覆蓋掉嗎,我們要計算分析用戶的整個人生周期的活動記錄和喜好蠢熄,來推測他的行為跪解,收入,知識層次签孔,信用叉讥,道德水準之類的,當然他的相關歷史行為是不能被丟棄的饥追。所以hbase可以很好的適應這樣的場景图仓!

三、用在生產環(huán)境前的注意事項:

HBase從本身原理和特性上保證了其高可用判耕、高可靠性透绩,以及分布式全內存異步的高寫入性能,那么最終用在生成環(huán)前需要注意以下幾個方面?

查詢條件:

HBase查詢條件簡單帚豪,只支持基于主鍵rowkey索引碳竟,即只能通過rowkey進行查詢,不能像其他數據庫一樣使用多條件復雜查詢狸臣,不支持二級索引莹桅,因此選型前,需確認是否能滿足業(yè)務需求烛亦。

rowkey設計要求較高

HBase是Key/vale數據庫诈泼,也只能通過key(即rowkey)來查詢數據,rowkey的設計非常重要煤禽,一個優(yōu)秀的rowkey設計铐达,即可以滿足查詢業(yè)務需求,同時也能讓數據均衡分布在集群中的節(jié)點上檬果。提升讀寫性能瓮孙。

不太適合大范圍key查詢

從HBase的存儲原理可知,其根據rowkey字節(jié)范圍進行分區(qū)分文件存儲选脊,大范圍的數據查詢會使查詢落到多個不同的RegionServer上杭抠,所以大范圍的rokey查詢,查詢效率會比較低下恳啥。

Hbase部署相對復雜偏灿,運維成本高:

部署Hbase集群之前,首先要部署Hadoop集群钝的,這包括HDFS翁垂、Yarn、Mapredue等一系列組件扁藕,其次還要部署Zookeeper集群沮峡。

在這兩塊的服務都正常部署啟動后,才能部署HBase集群亿柑,此外還包括監(jiān)控運維等服務組件邢疙。

這樣看,部署Hbase集群望薄,其實就是要部署和運維Hadoop的整個生態(tài)疟游,對于初步使用的開發(fā)者而言,還是有不小的工作量痕支。

四颁虐、總結

HBase已成熟地應用于國內外的很多大公司,總之卧须,HBase 適合用來存儲各種類型的大規(guī)模的數據另绩,高可用儒陨、擴展性好,可無限伸縮笋籽,可為用戶提供實時的在線查詢蹦漠,同時也支持離線的應用,配合Hadoop平臺具備天然的大數據分析優(yōu)勢车海。但也要注意上面提到的局限性笛园,因此,需要架構人員和研發(fā)人員進行綜合考量侍芝,發(fā)揮HBase優(yōu)勢研铆。


喜歡本文的朋友,歡迎關注州叠、轉發(fā)棵红、評論,讓我們一起成為有智慧的架構師咧栗!

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末窄赋,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子楼熄,更是在濱河造成了極大的恐慌,老刑警劉巖浩峡,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件可岂,死亡現場離奇詭異,居然都是意外死亡翰灾,警方通過查閱死者的電腦和手機缕粹,發(fā)現死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纸淮,“玉大人平斩,你說我怎么就攤上這事⊙士椋” “怎么了绘面?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長侈沪。 經常有香客問我揭璃,道長,這世上最難降的妖魔是什么亭罪? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任瘦馍,我火速辦了婚禮,結果婚禮上应役,老公的妹妹穿的比我還像新娘情组。我一直安慰自己燥筷,他們只是感情好,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布院崇。 她就那樣靜靜地躺著肆氓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪亚脆。 梳的紋絲不亂的頭發(fā)上做院,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機與錄音濒持,去河邊找鬼键耕。 笑死,一個胖子當著我的面吹牛柑营,可吹牛的內容都是我干的屈雄。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼官套,長吁一口氣:“原來是場噩夢啊……” “哼酒奶!你這毒婦竟也來了?” 一聲冷哼從身側響起奶赔,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤惋嚎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后站刑,有當地人在樹林里發(fā)現了一具尸體另伍,經...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年绞旅,在試婚紗的時候發(fā)現自己被綠了摆尝。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡因悲,死狀恐怖堕汞,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情晃琳,我是刑警寧澤讯检,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站卫旱,受9級特大地震影響视哑,放射性物質發(fā)生泄漏。R本人自食惡果不足惜誊涯,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一挡毅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧暴构,春花似錦跪呈、人聲如沸段磨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苹支。三九已至,卻和暖如春误阻,著一層夾襖步出監(jiān)牢的瞬間债蜜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工究反, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留寻定,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓精耐,卻偏偏與公主長得像狼速,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子卦停,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內容