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排序的存儲模式來定位數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章