客戶端查詢乙個資料,先根據zookeeper獲取meta表所在的region資訊,meta表裡存著region的各種資訊,但是他也是在region裡的,會被乙個regionserver管理,資訊存放在節點meta-region-server中。
region表中存放著所有region的資訊,key是由表名,起始行,時間,雜湊值組成的,column有server,serverstartcode,regioninfo。server中存放的是regionserver的ip和port。regioninfo中有表名,startkey,endkey。根據這些資訊可以知道你查的資料的regionserver。
hbase支援三種查詢,rowkey,rowkey範圍,全表掃瞄。根據startkey和endkey。保證了rowkey和rowkey範圍的需求,剩下的就是全表掃瞄了。
每個regionserver的資料是兩部分組成的,一部分在記憶體中,稱為memstore,查詢memstore的過程叫做memstorescan。一部分存在檔案中,稱為storefile,查詢storefile的過程教程storefilescan。
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排序的儲存模式來定位資料。
HBase架構解析
hbase是存大資料的,之前也用過,一直沒好好的梳理下整個原理,通過網上搜尋和阿里大學的免費課程,總結了一下,希望對大家有所幫助,理論都是無聊的,希望大家能耐下心來一起成長。client就是你的 順序是這樣的 1 先訪問zookeeper,獲取region server位址。2 client再去訪問...
hbase條件查詢
一 環境 hbase版本hbase 0.20.5,hadoop的版本hadoop 0.20.2,jdk1.6 二 需求背景 在hbase中,進行條件查詢,很多的檔案都說過,但是大多數都是在說明如何設定合理的表結構以及如何設定rowkey進行查詢檢索,這樣的結構設計可以在一定層度上通過rowkey來定...
hbase分頁查詢
hbase分頁t提高查詢效率。startkey怎麼取沒有問題了。但是怎麼儲存呢,有同學可能會想到存到session,但是如果你的服務是rest api型的,就沒有session的概念了。那還有兩種選擇 一 是存到客戶端,讓客戶端每次請求時把startkey再傳回來,這樣需要依賴客戶端,如果客戶端是遠...