溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

HBase是怎么做到毫秒級查詢的

發(fā)布時間:2021-12-09 11:55:47 來源:億速云 閱讀:261 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要講解了“HBase是怎么做到毫秒級查詢的”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“HBase是怎么做到毫秒級查詢的”吧!

1. 緩存

HBase有兩塊主要的內(nèi)存緩存,MemStore 和 BlockCache。

具體的過程如下:

  • 一個查詢過來 regionserver 后首先用 MemStoreScanner 搜索 MemStore 里是否有所查的 rowKey ,這一步在內(nèi)存中,所以是很快的。

  • 如果不在 memstore 中,會經(jīng)過一系列的索引尋址會定位到 block 的位置。

  • 如果 block 在 BlockCache 緩存中則可以直接在內(nèi)存中操作,速度很快,不需要再進(jìn)行一次 IO 將整個 block 讀取到內(nèi)存中。

2. 過濾

  • RegionServer 啟動的時候就會把每個HFile的起止 rowkey 加載到內(nèi)存中,在定位 HFile 的時候可以過濾掉大部分HFile;


  • 同時同樣是加載到內(nèi)存的 Bloom Block 也會通過之前說的 bloomFilter 也會過濾掉大部分一定不包含所查rowKey的HFile。

3. 索引

經(jīng)過了上面的過濾,其實只剩下很少一部分的HFile需要去檢索了,HBase有三級索引,第一級索引會常駐內(nèi)存,二三級的索引會以block的形式存在HFile中。

索引相關(guān)更細(xì)節(jié)的東西可以看下這篇 HBase篇(4)-你不知道的HFileHBase篇(4)-你不知道的HFile

另外可以提一下,因為HBase是多版本共存的,所以結(jié)果可能是會有多個的,因此檢索的過程不是找到一個就返回了,而是要找到所有的,然后將結(jié)果合并。


HBase的各個角色之間是怎么協(xié)調(diào)工作的?  

先說說Hbase主要包含的角色: HMaster/HRegionServer/Zookeeper

1. HRegionServer 

負(fù)責(zé)實際數(shù)據(jù)的讀寫. 當(dāng)訪問數(shù)據(jù)時, 客戶端最終會直接與 RegionServer 通信。HBase的表根據(jù)Row Key的區(qū)域分成多個Region, 一個Region包含這這個區(qū)域內(nèi)所有數(shù)據(jù). 而Region server負(fù)責(zé)管理多個Region, 負(fù)責(zé)在這個Region server上的所有region的讀寫操作.

2.  HMaster 

  • 負(fù)責(zé)管理Region的位置, DDL(新增和刪除表結(jié)構(gòu));

  • 協(xié)調(diào) RegionServer,在集群處于數(shù)據(jù)恢復(fù)或者動態(tài)調(diào)整負(fù)載時,分配Region到某一個 RegionServer 中;

  • 管控集群,監(jiān)控所有 Region Server 的狀態(tài);

  • 提供DDL相關(guān)的API, 新建(create),刪除(delete)和更新(update)表結(jié)構(gòu);

3.  Zookeeper 

負(fù)責(zé)維護(hù)和記錄整個Hbase集群的狀態(tài)。

zookeeper探測和記錄Hbase集群中服務(wù)器的狀態(tài)信息.如果zookeeper發(fā)現(xiàn)服務(wù)器宕機(jī),它會通知Hbase的master節(jié)點。master 節(jié)點宕機(jī),則會通知 backup 變成 master。


說說 HBase 的 LSM Tree?

LSM Tree即是日志結(jié)構(gòu)合并樹。

先說日志結(jié)構(gòu):

日志的特點是它是順序追加寫的,可以保證非常好的寫操作性能,但是從日志文件中讀一些數(shù)據(jù)將會比寫操作需要更多的時間,需要倒序掃描,直接找到所需的內(nèi)容。

LSM tree是通過把隨機(jī)寫的數(shù)據(jù)寫到內(nèi)存,然后定期flush到磁盤,對于磁盤來說,讓所有的操作順序化,而不是隨機(jī)讀寫。

再說說合并樹:

LSM Tree的原理是把一棵大樹拆分成N棵小樹,它首先寫入內(nèi)存中即是小樹,隨著小樹越來越大,會flush到磁盤中,磁盤中的樹定期可以做merge操作,合并成一棵大樹,以優(yōu)化讀性能。

感謝各位的閱讀,以上就是“HBase是怎么做到毫秒級查詢的”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對HBase是怎么做到毫秒級查詢的這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI