當前位置:
首頁 > 知識 > hbase查詢解析

hbase查詢解析

hbase查找流程圖

hbase查詢解析


流程說明

從zk獲取meta地址

客戶端查詢一個數據,先根據zookeeper獲取meta表所在的region信息,meta表裡存著region的各種信息,但是他也是在region里的,會被一個regionserver管理,信息存放在節點meta-region-server中。

查找數據對應的regionserver

region表中存放著所有region的信息,key是由表名,起始行,時間,散列值組成的,column有server,serverstartcode,regioninfo。server中存放的是regionserver的ip和port。regioninfo中有表名,startkey,endkey。根據這些信息可以知道你查的數據的regionserver。

hbase支持三種查詢,rowkey,rowkey範圍,全表掃描。根據startkey和endkey。保證了rowkey和rowkey範圍的需求,剩下的就是全表掃描了。

查詢regionserver的地址

每個regionserver的數據是兩部分組成的,一部分在內存中,稱為memstore,查詢memstore的過程叫做memstorescan。一部分存在文件中,稱為storefile,查詢storefile的過程教程storefilescan。

storefile的查詢

hbase的文件存儲格式如下

|data|meta|fileinfo|dataindex|metaindex|trailer|

trailer記錄fileinfo,dataindex,metaindex的偏移量。根據trailer可以找到dataindex。dataindex存放的是data數據的偏移量。

data塊的存儲如下

|magic|key value|key value|key value|

這裡的存儲是按照key的字典順序存的。


小結

hbase的查詢是一個多級查找索引的過程,根據zk找meta,根據meta找regionserver。猶豫hbase lsm的數據結構,數據分散成兩塊,一部分在內存,一部分在文件。此時就分成了兩部分查詢任務,在文件查詢的過程中,先讀取trailer找到dataindex,根據dataindex再找到data模塊的索引,然後根據data里rowkey排序的存儲模式來定位數據。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

程序員的系統桌面應該是這樣的
Spring Boot 讀取靜態資源文件

TAG:程序員小新人學習 |