HBase資料檢索流程與資料儲存

2021-08-06 08:21:58 字數 2992 閱讀 2743

上圖中,我們可以看出不管客戶端讀或寫乙個表的資料,首先鏈結zookeeper,因為需要到zookeeper中找讀的資料,表是通過region來管理,每個region由regionserver管理,每個region都有startkey及endkey。

hbase的**分為user tables(使用者表)和catalog tables(系統自帶表)。

user tables(使用者表)包含user資訊、region資訊(startkey和endkey)。例:user表的region-01存在regionserver-03中。該資訊是儲存在meta-table中。

在hbase新版本中,有類似於rdbms(關聯式資料庫管理系統)中database的命名空間的概念。hbase的所有表都在data目錄下,data下包含default目錄和hbase目錄,這裡的目錄就是命名空間的概念。

使用者自定義的表預設情況下命名空間為default,而系統自帶的元資料表的命名空間為hbase。

meta表只有乙個region,它的region也需要regionserver管理,即為meta-region-server的功能。使用者首先找到meta-region-server,然後找到meta表,scan命令可以看到**中column被什麼server管理。

綜上所述,使用者表由很多region組成,region資訊儲存在hbase:meta中。使用者表的每乙個region都有key。client需要先讀zookeeper,其實通過meta-region-server找到的是meta表的region,找到後掃瞄meta表的資料,然後再找到資料再操作。

hbase能高速實現資料儲存和訪問源於hbase資料儲存。

1. 連線zookeeper,從zookeeper中找到要讀的資料。我們需要知道表中rowkey在region的位置。

2. 客戶端查詢hregionserver,hregionserver管理眾多region。

3. hmaster也需要連線zookeeper,連線的作用是:hmaster需要知道哪些hregionserver是活動的及hregionserver所在的位置,然後管理hregionserver。

4. hbase內部是把資料寫到hdfs上的,dfs有客戶端。

5. region中包含hlog、store。一張表有幾個列簇,就有幾個store。store中有很多memstore及storefile。storefile是對hfile的封裝。storefile真正儲存在hdfs上。

6. 寫資料時,先往hlog上寫乙份,再往memstore上寫乙份。當memstore達到一定大小則往storefile上寫。若memstore資料有丟失,則從hlog上恢復。

7. 讀資料先到memstore上讀,再到storefile上讀,之後合併。

1. hbase中的所有資料檔案都儲存在hadoop hdfs檔案系統上,主要包括兩種檔案型別:

1)hfile:hbase中keyvalue資料的儲存格式,hfile是hadoop的二進位制格式檔案,實際上storefile就是對hfile做了輕量級的包裝,進行資料的儲存。

2)hlog file:hbase中wal(write ahead log)的儲存格式,物理上是hadoop的sequence file。

2. hregionserver內部管理了一系列hregion物件,每個hregion對應了table中的乙個region,hregion中由多個hstore組成。每個hstore對應了table中的乙個column family的儲存,可以看出每個columnfamily其實就是乙個集中的儲存單元,因此最好將具備共同io特性的column放在乙個column family中,這樣最高效。

3. hstore儲存是hbase儲存的核心,由兩部分組成,一部分是memstore,一部分是storefile。

4. memstore是 sorted memory buffer,使用者寫入的資料首先會放入memstore,當memstore滿了以後會flush成乙個storefile(底層實現是hfile)。

5. hlog 檔案結構:wal意為write ahead log,類似mysql中的binlog,用來做災難恢復。hlog記錄資料的所有變更,一旦資料修改,就可以從log中進行恢復。 

6. 每個hregionserver維護乙個hlog,而不是每個hregion乙個。這樣不同region(來自不同table)的日誌會混在一起,這樣做的目的是不斷追加單個檔案,相對於同時寫多個檔案而言,可以減少磁碟定址次數,因此可以提高對table的寫效能。帶來的麻煩是,如果一台hregionserver下線,為了恢復其上的region,需要將hregionserver上的log進行拆分,然後分發到其它hregionserver上進行恢復。

1. client客戶端寫入資料後 -> 資料存入memstore,一直到memstore滿之後 flush成乙個storefile,直至增長到一定閾值 -> 觸發compact合併操作 -> 多個storefile合併成乙個storefile。

2. 同時進行版本合併和資料刪除 -> 當storefiles compact後,逐步形成越來越大的storefile ->單個storefile大小超過一定閾值後,觸發split操作,把當前region分成2個region,region會下線,新分出的2個孩子region會被hmaster分配到相應的hregionserver上,使得原先1個region的壓力得以分流到2個region上。

hbase優點與資料檢索流程

hbase是乙個列式儲存的非關係型資料庫,依賴於zookeeper。資料儲存於hdfs上,主節點是hmaster,從節點是hregionserver.hbase與關係型資料庫相比較優點如下 1.hbase資料儲存於hdfs上,可擴充套件性強。資料條目數可以儲存上一條。2.通過rowkey檢索資料,速...

Data Retrieval 資料檢索

index 索引 定義 分類 1 結構化資料 固定格式 有限長度 應用 資料庫 元資料 2 非結構化資料 非定格式 非限長度 應用 磁碟檔案 查詢方式 1 結構化查詢 資料庫搜尋 2 非結構化查詢 a 順序掃瞄 b 全文檢索定義 根據使用者需求,從資料庫提取資料,生成資料表。資料表 可放回資料庫,也...

基本資料檢索

2016.11.28 二 基本資料檢索 select from table select 和 from 號是特殊符號,它表示所有的列,這句話的意思就是從 table 中查詢所有的列。在mysql和 oracle 中要求每句話的末尾要加乙個分號 但在 sqlserver 中不適用。2.1 查詢指定列 ...