如何使用HBase蟋座?大數(shù)據(jù)存儲的個實戰(zhàn)場景

現(xiàn)如今各種數(shù)據(jù)存儲方案層出不窮,本文僅僅是結(jié)合兩個實戰(zhàn)場景就基于HBase的大數(shù)據(jù)存儲做了簡單的分析地技,并對HBase的原理做了簡單的闡述蜈七。如何使用好HBase,甚至于如何選擇一個最優(yōu)的數(shù)據(jù)存儲方案莫矗,還需要我們根據(jù)場景需要具體分析和設(shè)計

HBase是一個高可靠性飒硅、高性能、面向列作谚、可伸縮的分布式存儲系統(tǒng)三娩,適用于結(jié)構(gòu)化的存儲,底層依賴于Hadoop的HDFS妹懒,利用HBase技術(shù)可在廉價PCServer上搭建起大規(guī)模結(jié)構(gòu)化存儲集群雀监。因此HBase被廣泛使用在大數(shù)據(jù)存儲的解決方案中。

為何使用HBase

HBase的優(yōu)點:

- 列可以動態(tài)增加眨唬,并且列為空就不存儲數(shù)據(jù)会前,節(jié)省存儲空間。

- Hbase自動切分數(shù)據(jù)匾竿,使得數(shù)據(jù)存儲自動具有水平scalability瓦宜。

- Hbase可以提供高并發(fā)讀寫操作的支持。



HBase的缺點:

- 不能支持條件查詢岭妖,只支持按照Row key來查詢临庇。

- HBase并不適合傳統(tǒng)的事物處理程序或關(guān)聯(lián)分析反璃,不支持復(fù)雜查詢,一定程度上限制了它的使用假夺,但是用它做數(shù)據(jù)存儲的優(yōu)勢也同樣非常明顯淮蜈。

因為HBase存儲的是松散的數(shù)據(jù),所以如果你的應(yīng)用程序中已卷,數(shù)據(jù)表每一行的結(jié)構(gòu)是有差別的梧田,那么可以考慮使用HBase。因為HBase的列可以動態(tài)增加悼尾,并且列為空就不存儲數(shù)據(jù)柿扣,所以如果你需要經(jīng)常追加字段,且大部分字段是NULL值的闺魏,那可以考慮HBase。因為HBase可以根據(jù)Rowkey提供高效的查詢俯画,所以如果你的數(shù)據(jù)(包括元數(shù)據(jù)析桥、消息、二進制數(shù)據(jù)等)都有著同一個主鍵艰垂,或者你需要通過鍵來訪問和修改數(shù)據(jù)泡仗,使用HBase是一個很好地選擇。

如何使用HBase

場景一:賣家操作日志

賣家操作日志猜憎,顧名思義是用來記錄商家操作的系統(tǒng)娩怎,從而可以保證商家可以精確查詢自己的各種操作。京東有幾十萬的商家時時刻刻的進行著各種操作胰柑,因此賣家操作日志的特點是:數(shù)據(jù)量大截亦、實時性強、增多查少柬讨。



圖1



圖2

我們在做賣家操作日志初期崩瓤,將所有的操作日志存放在ES中,操作日志的數(shù)據(jù)量是非常大的踩官,但尷尬的是我們當(dāng)時所能申請到的ES資源有限却桶。當(dāng)把大量的數(shù)據(jù)存儲到有限的ES集群中時便導(dǎo)致了性能的下降。在這種情況下蔗牡,我們選擇了只在ES集群中存儲最近三個月的數(shù)據(jù)颖系,對其提供靈活的查詢,而長期的數(shù)據(jù)存儲使用HBase來進行辩越。這樣的話我們便可以實現(xiàn)對近期操作靈活展現(xiàn)嘁扼,對長期數(shù)據(jù)也有精確備份。

場景二:京麥消息日志的存儲

京麥消息日志的存儲是屬于京麥筋斗云系統(tǒng)(用于打造京麥消息生態(tài)系統(tǒng)閉環(huán))不可或缺的一部分区匣。其中包含消息的全鏈路追蹤以及消息的統(tǒng)計分析偷拔。京麥消息每天都會有幾千萬的消息量蒋院,如何對消息進行追蹤和統(tǒng)計便成為了一個至關(guān)重要的問題。消息追蹤要求實時性莲绰、多維度精確查詢欺旧,因此我們選擇將最近一周的消息日志存儲在ES。統(tǒng)計分析要求我們有足夠多的數(shù)據(jù)蛤签,因此我們在將數(shù)據(jù)存儲在ES中的同時也存儲在HBase中一份辞友。最終再定期將HBase中的數(shù)據(jù)導(dǎo)入到京東的數(shù)據(jù)集市中,這樣我們便可以很方便的對京麥消息進行統(tǒng)計分析震肮。

HBase的數(shù)據(jù)結(jié)構(gòu)



要使用HBase我們首先要了解HBase的數(shù)據(jù)結(jié)構(gòu):

HBase會存儲系列的行記錄称龙,行記錄有三個基本類型的定義:Row Key、Time Stamp戳晌、Column Family鲫尊。

Row Key

與NoSQL數(shù)據(jù)庫一樣,Row Key是用來檢索記錄的主鍵沦偎。訪問HBase table中的行疫向,只有三種方式:

通過單個Row Key訪問。

通過Row Key的range全表掃描豪嚎。

Row Key可以是任意字符串(最大長度是64KB搔驼,實際應(yīng)用中長度一般為 10 ~ 100bytes),在HBase內(nèi)部侈询,Row Key保存為字節(jié)數(shù)組舌涨。

在存儲時,數(shù)據(jù)按照Row Key的字典序(byte order)排序存儲扔字。設(shè)計Key時囊嘉,要充分排序存儲這個特性,將經(jīng)常一起讀取的行存儲到一起(位置相關(guān)性)啦租。

Column Family

HBase表中每個列都必須屬于某個列族哗伯,列族必須作為表模式定義的一部分預(yù)先給出(有點像關(guān)系型數(shù)據(jù)庫中的列名,定義完一般情況下就不會再去修改);

列名以列族作為前綴篷角,每個列族都可以有多個列成員焊刹。新的列族成員(也就是列)可以隨后按需,動態(tài)加入恳蹲。

Hbase把同一列族里面的數(shù)據(jù)存儲在同一目錄下虐块,由幾個文件保存。

Time Stamp

在HBase每個cell存儲單元對同一份數(shù)據(jù)有多個版本嘉蕾,根據(jù)唯一的時間戳來區(qū)分每個版本之間的差異贺奠,不同版本的數(shù)據(jù)按照時間倒序排序,最新的數(shù)據(jù)版本排在最前面错忱。

簡述HBase的架構(gòu)原理

1. HBase的模塊



Master

HBase Master用于協(xié)調(diào)多個Region Server儡率,偵測各個Region Server之間的狀態(tài)挂据,并平衡Region Server之間的負載。HBase Master還有一個職責(zé)就是負責(zé)分配Region給Region Server儿普。HBase允許多個Master 節(jié)點共存崎逃,但是這需要Zookeeper的幫助。不過當(dāng)多個Master節(jié)點共存時眉孩,只有一個Master是提供服務(wù)的个绍,其他的Master節(jié)點處于待命的狀態(tài)。當(dāng)正在工作的Master節(jié)點宕機時浪汪,其他的Master則會接管 HBase 的集群巴柿。

Region Server

對于一個Region Server而言蔓涧,其包括了多個Region冗茸。Region Server的作用只是管理表格喳资,以及實現(xiàn)讀寫操作憎夷。Client 直接連接Region Server,并通信獲取HBase中的數(shù)據(jù)闷煤。對于Region而言人断,則是真實存放HBase數(shù)據(jù)的地方披泪,也就說Region是HBase可用性和分布式的基本單位蜗侈。如果當(dāng)一個表格很大,并由多個CF組成時睡蟋,那么表的數(shù)據(jù)將存放在多個Region之間踏幻,并且在每個Region中會關(guān)聯(lián)多個存儲的單元(Store)。

Zookeeper

對于HBase而言戳杀,Zookeeper的作用是至關(guān)重要的该面。首先Zookeeper是作為HBase Master的HA解決方案。也就是說信卡,是Zookeeper保證了至少有一個HBase Master處于運行狀態(tài)隔缀。并且Zookeeper負責(zé)Region和Region Server的注冊。其實Zookeeper發(fā)展到目前為止傍菇,已經(jīng)成為了分布式大數(shù)據(jù)框架中容錯性的標(biāo)準(zhǔn)框架猾瘸。不光是HBase,幾乎所有的分布式大數(shù)據(jù)相關(guān)的開源框架丢习,都依賴于Zookeeper實現(xiàn)HA牵触。

2. HBase的原理



首先我們需要知道HBase的集群是通過Zookeeper來進行機器之前的協(xié)調(diào),也就是說HBase Master與Region Server之間的關(guān)系是依賴Zookeeper來維護咐低。當(dāng)一個Client需要訪問HBase集群時揽思,Client需要先和Zookeeper來通信,然后才會找到對應(yīng)的Region Server见擦。每一個 Region Server管理著很多個Region钉汗。對于HBase來說羹令,Region是HBase并行化的基本單元。因此损痰,數(shù)據(jù)也都存儲在Region中福侈。

這里我們需要特別注意,每一個Region都只存儲一個Column Family的數(shù)據(jù)徐钠,并且是該CF中的一段(按Row 的區(qū)間分成多個Region)癌刽。Region所能存儲的數(shù)據(jù)大小是有上限的,當(dāng)達到該上限時(Threshold)尝丐,Region會進行分裂显拜,數(shù)據(jù)也會分裂到多個Region中,這樣便可以提高數(shù)據(jù)的并行化爹袁,以及提高數(shù)據(jù)的容量远荠。

每個Region包含著多個Store對象。每個Store包含一個MemStore失息,和一個或多個HFile譬淳。MemStore便是數(shù)據(jù)在內(nèi)存中的實體,并且一般都是有序的盹兢。當(dāng)數(shù)據(jù)向Region寫入的時候邻梆,會先寫入MemStore。當(dāng)MemStore中的數(shù)據(jù)需要向底層文件系統(tǒng)傾倒(Dump)時(例如MemStore中的數(shù)據(jù)體積到達MemStore配置的最大值)绎秒,Store便會創(chuàng)建StoreFile浦妄,而StoreFile就是對HFile一層封裝。所以MemStore中的數(shù)據(jù)會最終寫入到HFile中见芹,也就是磁盤IO剂娄。由于HBase底層依靠HDFS,因此HFile都存儲在HDFS之中玄呛。這便是整個HBase工作的原理簡述阅懦。

使用HBase時應(yīng)注意的問題

基于Hbase的系統(tǒng)設(shè)計與開發(fā)中,需要考慮的因素不同于關(guān)系型數(shù)據(jù)庫徘铝,Hbase模式本身很簡單耳胎,但賦予你更多調(diào)整的空間,有一些模式寫性能很好庭砍,但讀取數(shù)據(jù)時表現(xiàn)不好场晶,或者正好相反,類似傳統(tǒng)數(shù)據(jù)庫基于范式的OR建模怠缸,在實際項目中考慮Hbase設(shè)計模式是诗轻,我們需要從以下幾方面內(nèi)容著手:

? 這個表應(yīng)該有多少個列簇

? 列簇使用什么數(shù)據(jù)

? 每個列簇應(yīng)有多少個列

? 列名應(yīng)該是什么,盡管列名不必在建表時定義揭北,但是讀寫數(shù)據(jù)時是需要的

? 單元應(yīng)該存放什么數(shù)據(jù)

? 每個單元存儲什么時間版本

? 行健結(jié)構(gòu)是什么扳炬,應(yīng)該包括什么信息

總結(jié)

現(xiàn)如今各種數(shù)據(jù)存儲方案層出不窮吏颖,本文僅僅是結(jié)合兩個實戰(zhàn)場景就基于HBase的大數(shù)據(jù)存儲做了簡單的分析,并對HBase的原理做了簡單的闡述恨樟。如何使用好HBase半醉,甚至于如何選擇一個最優(yōu)的數(shù)據(jù)存儲方案,還需要我們根據(jù)場景需要具體分析和設(shè)計

給大家整理了一些學(xué)習(xí)資料劝术,需要的話可以加我的QQ:3300863615? 免費領(lǐng)取哦



?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缩多,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子养晋,更是在濱河造成了極大的恐慌衬吆,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绳泉,死亡現(xiàn)場離奇詭異逊抡,居然都是意外死亡,警方通過查閱死者的電腦和手機零酪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門冒嫡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人四苇,你說我怎么就攤上這事孝凌。” “怎么了月腋?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵胎许,是天一觀的道長。 經(jīng)常有香客問我罗售,道長,這世上最難降的妖魔是什么钩述? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任寨躁,我火速辦了婚禮,結(jié)果婚禮上牙勘,老公的妹妹穿的比我還像新娘职恳。我一直安慰自己,他們只是感情好方面,可當(dāng)我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布放钦。 她就那樣靜靜地躺著,像睡著了一般恭金。 火紅的嫁衣襯著肌膚如雪操禀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天横腿,我揣著相機與錄音颓屑,去河邊找鬼斤寂。 笑死,一個胖子當(dāng)著我的面吹牛揪惦,可吹牛的內(nèi)容都是我干的遍搞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼器腋,長吁一口氣:“原來是場噩夢啊……” “哼溪猿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起纫塌,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤诊县,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后护戳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體翎冲,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年媳荒,在試婚紗的時候發(fā)現(xiàn)自己被綠了抗悍。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡钳枕,死狀恐怖缴渊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鱼炒,我是刑警寧澤衔沼,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站昔瞧,受9級特大地震影響指蚁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜自晰,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一凝化、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酬荞,春花似錦搓劫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至咧党,卻和暖如春秘蛔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工缠犀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留数苫,地道東北人。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓辨液,卻偏偏與公主長得像虐急,于是被迫代替她去往敵國和親滔迈。 傳聞我的和親對象是個殘疾皇子止吁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 本文首先簡單介紹了HBase,然后重點講述了HBase的高并發(fā)和實時處理數(shù)據(jù) 、HBase數(shù)據(jù)模型、HBase物理...
    達微閱讀 2,736評論 1 13
  • 簡介 HBase是高可靠性,高性能,面向列,可伸縮的分布式存儲系統(tǒng),利用HBase技術(shù)可在廉價PC Serve...
    九世的貓閱讀 2,197評論 1 6
  • 轉(zhuǎn)自 沈釗偉 HBase 在大數(shù)據(jù)生態(tài)圈中的位置 提到大數(shù)據(jù)的存儲玛界,大多數(shù)人首先聯(lián)想到的是 Hadoop 和 Ha...
    wangxiaoda閱讀 1,251評論 0 19
  • HBase是Hadoop 的正式子項目沦疾,它是一個面向列的分布式數(shù)據(jù)庫称近。是建立的hdfs之上,提供高可靠性哮塞、高性能刨秆、...
    我是嘻哈大哥閱讀 838評論 0 1
  • 初次接觸HBase的讀者,建議先閱讀淺析HBase:為高效的可擴展大規(guī)模分布式系統(tǒng)而生 HBase的構(gòu)成 物理上來...
    耀凱考前突擊大師閱讀 5,257評論 0 12