hbase查詢解析
hbase查找流程圖
流程說明
從zk獲取meta地址
客戶端查詢一個數據,先根據zookeeper獲取meta表所在的region信息,meta表裡存著region的各種信息,但是他也是在region里的,會被一個regionserver管理,信息存放在節點meta-region-server中。
查找數據對應的regionserverregion表中存放著所有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:程序員小新人學習 |