Hbase查詢(xún)速度快的原理分析

HBase能提供實(shí)時(shí)計(jì)算服務(wù)主要原因是由其架構(gòu)和底層的數(shù)據(jù)結(jié)構(gòu)決定的慨仿,即由LSM-Tree(Log-Structured Merge-Tree) + HTable(region分區(qū)) + Cache決定——客戶(hù)端可以直接定位到要查數(shù)據(jù)所在的HRegion server服務(wù)器,然后直接在服務(wù)器的一個(gè)region上查找要匹配的數(shù)據(jù)纳胧,并且這些數(shù)據(jù)部分是經(jīng)過(guò)cache緩存的镰吆。

前面說(shuō)過(guò)HBase會(huì)將數(shù)據(jù)保存到內(nèi)存中,在內(nèi)存中的數(shù)據(jù)是有序的跑慕,如果內(nèi)存空間滿(mǎn)了万皿,會(huì)刷寫(xiě)到HFile中,而在HFile中保存的內(nèi)容也是有序的相赁。當(dāng)數(shù)據(jù)寫(xiě)入HFile后相寇,內(nèi)存中的數(shù)據(jù)會(huì)被丟棄慰于。

HFile文件為磁盤(pán)順序讀取做了優(yōu)化钮科,按頁(yè)存儲(chǔ)。下圖展示了在內(nèi)存中多個(gè)塊存儲(chǔ)并歸并到磁盤(pán)的過(guò)程婆赠,合并寫(xiě)入會(huì)產(chǎn)生新的結(jié)果塊绵脯,最終多個(gè)塊被合并為更大塊佳励。


多次刷寫(xiě)后會(huì)產(chǎn)生很多小文件,后臺(tái)線程會(huì)合并小文件組成大文件蛆挫,這樣磁盤(pán)查找會(huì)限制在少數(shù)幾個(gè)數(shù)據(jù)存儲(chǔ)文件中赃承。HBase的寫(xiě)入速度快是因?yàn)樗鋵?shí)并不是真的立即寫(xiě)入文件中,而是先寫(xiě)入內(nèi)存悴侵,隨后異步刷入HFile瞧剖。所以在客戶(hù)端看來(lái),寫(xiě)入速度很快可免。另外抓于,寫(xiě)入時(shí)候?qū)㈦S機(jī)寫(xiě)入轉(zhuǎn)換成順序?qū)懀瑪?shù)據(jù)寫(xiě)入速度也很穩(wěn)定浇借。

而讀取速度快是因?yàn)樗褂昧薒SM樹(shù)型結(jié)構(gòu)捉撮,而不是B或B+樹(shù)。磁盤(pán)的順序讀取速度很快妇垢,但是相比而言巾遭,尋找磁道的速度就要慢很多。HBase的存儲(chǔ)結(jié)構(gòu)導(dǎo)致它需要磁盤(pán)尋道時(shí)間在可預(yù)測(cè)范圍內(nèi)闯估,并且讀取與所要查詢(xún)的rowkey連續(xù)的任意數(shù)量的記錄都不會(huì)引發(fā)額外的尋道開(kāi)銷(xiāo)灼舍。比如有5個(gè)存儲(chǔ)文件,那么最多需要5次磁盤(pán)尋道就可以涨薪。而關(guān)系型數(shù)據(jù)庫(kù)片仿,即使有索引,也無(wú)法確定磁盤(pán)尋道次數(shù)尤辱。而且砂豌,HBase讀取首先會(huì)在緩存(BlockCache)中查找,它采用了LRU(最近最少使用算法)光督,如果緩存中沒(méi)找到阳距,會(huì)從內(nèi)存中的MemStore中查找,只有這兩個(gè)地方都找不到時(shí)结借,才會(huì)加載HFile中的內(nèi)容筐摘,而上文也提到了讀取HFile速度也會(huì)很快,因?yàn)楣?jié)省了尋道開(kāi)銷(xiāo)船老。

舉例:

A:如果快速查詢(xún)(從磁盤(pán)讀數(shù)據(jù))咖熟,hbase是根據(jù)rowkey查詢(xún)的,只要能快速的定位rowkey,??就能實(shí)現(xiàn)快速的查詢(xún)柳畔,主要是以下因素:

?????1馍管、hbase是可劃分成多個(gè)region,你可以簡(jiǎn)單的理解為關(guān)系型數(shù)據(jù)庫(kù)的多個(gè)分區(qū)薪韩。

??????2确沸、鍵是排好序了的

??????3捌锭、按列存儲(chǔ)的

首先,能快速找到行所在的region(分區(qū))罗捎,假設(shè)表有10億條記錄观谦,占空間1TB,???分列成了500個(gè)region,??1個(gè)region占2個(gè)G.?最多讀取2G的記錄,就能找到對(duì)應(yīng)記錄桨菜;?

其次豁状,是按列存儲(chǔ)的,其實(shí)是列族倒得,假設(shè)分為3個(gè)列族替蔬,每個(gè)列族就是666M,?如果要查詢(xún)的東西在其中1個(gè)列族上屎暇,1個(gè)列族包含1個(gè)或者多個(gè)HStoreFile承桥,假設(shè)一個(gè)HStoreFile是128M,?該列族包含5個(gè)HStoreFile在磁盤(pán)上.?剩下的在內(nèi)存中根悼。

再次凶异,是排好序了的,你要的記錄有可能在最前面挤巡,也有可能在最后面剩彬,假設(shè)在中間,我們只需遍歷2.5個(gè)HStoreFile共300M

最后矿卑,每個(gè)HStoreFile(HFile的封裝)喉恋,是以鍵值對(duì)(key-value)方式存儲(chǔ),只要遍歷一個(gè)個(gè)數(shù)據(jù)塊中的key的位置母廷,并判斷符合條件可以了轻黑。?一般key是有限的長(zhǎng)度,假設(shè)跟value是1:19(忽略HFile上其它塊)琴昆,最終只需要15M就可獲取的對(duì)應(yīng)的記錄氓鄙,按照磁盤(pán)的訪問(wèn)100M/S,只需0.15秒业舍。?加上塊緩存機(jī)制(LRU原則)抖拦,會(huì)取得更高的效率。

B:實(shí)時(shí)查詢(xún)

實(shí)時(shí)查詢(xún)舷暮,可以認(rèn)為是從內(nèi)存中查詢(xún)态罪,一般響應(yīng)時(shí)間在1秒內(nèi)。HBase的機(jī)制是數(shù)據(jù)先寫(xiě)入到內(nèi)存中下面,當(dāng)數(shù)據(jù)量達(dá)到一定的量(如128M)复颈,再寫(xiě)入磁盤(pán)中,?在內(nèi)存中诸狭,是不進(jìn)行數(shù)據(jù)的更新或合并操作的券膀,只增加數(shù)據(jù)君纫,這使得用戶(hù)的寫(xiě)操作只要進(jìn)入內(nèi)存中就可以立即返回驯遇,保證了HBase?I/O的高性能芹彬。

實(shí)時(shí)查詢(xún),即反應(yīng)根據(jù)當(dāng)前時(shí)間的數(shù)據(jù)叉庐,可以認(rèn)為這些數(shù)據(jù)始終是在內(nèi)存的舒帮,保證了數(shù)據(jù)的實(shí)時(shí)響應(yīng)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末陡叠,一起剝皮案震驚了整個(gè)濱河市玩郊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌枉阵,老刑警劉巖译红,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異兴溜,居然都是意外死亡侦厚,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)拙徽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)刨沦,“玉大人,你說(shuō)我怎么就攤上這事膘怕∠胱纾” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵岛心,是天一觀的道長(zhǎng)来破。 經(jīng)常有香客問(wèn)我,道長(zhǎng)忘古,這世上最難降的妖魔是什么讳癌? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮存皂,結(jié)果婚禮上晌坤,老公的妹妹穿的比我還像新娘。我一直安慰自己旦袋,他們只是感情好骤菠,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著疤孕,像睡著了一般商乎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上祭阀,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天鹉戚,我揣著相機(jī)與錄音鲜戒,去河邊找鬼。 笑死抹凳,一個(gè)胖子當(dāng)著我的面吹牛遏餐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赢底,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼失都,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了幸冻?” 一聲冷哼從身側(cè)響起粹庞,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎洽损,沒(méi)想到半個(gè)月后庞溜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碑定,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年流码,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片不傅。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡旅掂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出访娶,到底是詐尸還是另有隱情商虐,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布崖疤,位于F島的核電站秘车,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏劫哼。R本人自食惡果不足惜叮趴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望权烧。 院中可真熱鬧眯亦,春花似錦、人聲如沸般码。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)板祝。三九已至宫静,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背孤里。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工伏伯, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捌袜。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓说搅,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親琢蛤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蜓堕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,898評(píng)論 2 89
  • HBase存儲(chǔ)架構(gòu)圖 HBase Master 為Region server分配region 負(fù)責(zé)Region s...
    kimibob閱讀 5,566評(píng)論 0 52
  • 初次接觸HBase的讀者抛虏,建議先閱讀淺析HBase:為高效的可擴(kuò)展大規(guī)模分布式系統(tǒng)而生 HBase的構(gòu)成 物理上來(lái)...
    耀凱考前突擊大師閱讀 5,233評(píng)論 0 12
  • 本文首先簡(jiǎn)單介紹了HBase,然后重點(diǎn)講述了HBase的高并發(fā)和實(shí)時(shí)處理數(shù)據(jù) 博其、HBase數(shù)據(jù)模型、HBase物理...
    達(dá)微閱讀 2,726評(píng)論 1 13
  • 第一迂猴,要準(zhǔn)備好承受很多的傷害慕淡。因?yàn)楫?dāng)你第一次創(chuàng)業(yè)的時(shí)候,受到傷害是常有的事沸毁,你可能是一個(gè)一切都很好峰髓、也很幸福的人,...
    Tim_辰天閱讀 299評(píng)論 0 3