1. 程式人生 > >HBase相關知識

HBase相關知識

一、HBase資料模型

https://www.cnblogs.com/csyuan/p/6543018.html 

二、HBase 物理模型:https://blog.csdn.net/gg782112163/article/details/53523660

a. Table 中所有的行都按照 row key 的字典序進行排列

b. Table 在行的方向上分割為多個 Region

c. Region 是按大小分割的, 每個表開始只有一個 region , 隨著資料增多, region 不但增大。 當增大到一個閾值時, region 就會等分兩個新的 region, 之後會有越來越多的 region.

d. Region 是Hbase 中分散式儲存和負載均衡的最小單元, 不同Region 分佈到不同RegionServer上。

e.一個 HRegionServer 管理多個 HRegion.

f. Region 雖然是分散式儲存的最小單元, 但並不是儲存的最小單元。

g. Region 由一個或多個Store 組成, 每個 store 儲存一個 columns family;

h. 每個 store 由一個 memStore 和 0至多個 StoreFile 組成, StoreFile 包含 HFile

i. MemStore 儲存在記憶體中, StoreFile 儲存在HDFS上

三、HBase在HDFS上的目錄結構:https://blog.bcmeng.com/post/hbase-hdfs.html

namespace--》table--》region--》列簇--》storefile

### /hbase/WALs
被HLog例項管理的WAL檔案。

### /hbase/WALs/data-hbase.com,60020,1443159380730
對於每個HregionServer,日誌目錄中都包含一個對應的子目錄

### hbase/WALs/data-hbase.com,60020,1443159380730/data-hbase.com%2C60020%2C1443159380730.1443787240573
在每個子目錄下有多個HLog檔案(因為日誌滾動)

### /hbase/oldWALs
當/hbase/WALs 中的HLog檔案被持久化到儲存檔案中,不再需要日誌檔案時,它們會被移動到/hbase/oldWALs目錄。

### /hbase/oldWALs/data-hbase.com%2C60020%2C1443159381290.1443787452518
具體的oldWALs檔案。

### /hbase/hbase.id
叢集的唯一ID

### /hbase/hbase.version
叢集的檔案格式版本資訊

### /hbase/corrupt
損壞的日誌檔案,一般為空

### /hbase/archive/
儲存表的歸檔和快照,HBase 在做 Split或者 compact 操作完成之後,會將 HFile 移到archive 目錄中,然後將之前的 hfile 刪除掉,該目錄由 HMaster 上的一個定時任務定期去清理。
儲存表的歸檔和快照具體目錄:
/hbase/archive/data/default/表名/region名/列族名/fd2221d8d1ae4e579c21882f0ec4c5a5

### /hbase/.tmp
當對錶做建立或者刪除操作的時候,會將表move 到該 tmp 目錄下,然後再去做處理操作。

### /hbase/data
hbase儲存資料的核心目錄
### /hbase/data/hbase
該目錄儲存了儲存了 HBase 的 namespace、meta 和acl 三個系統級表。
namespace 中儲存了 HBase 中的所有 namespace 資訊,包括預置的hbase 和 default。acl 則是表的使用者許可權控制。

- /hbase/data/hbase/meta
- /hbase/data/hbase/namespace
- /hbase/data/hbase/acl

### /hbase/data/default/
該目錄儲存所有使用者資料表
/hbase/data/default/表名

四、HBase的讀寫流程:https://blog.csdn.net/u011833033/article/details/79773421

寫: 

讀: 

client-->Zookeeper-->-ROOT-表-->.META.表-->RegionServer-->Region-->client 

  • (1) Client訪問Zookeeper,查詢-ROOT-表,獲取.META.表資訊。
  • (2) 從.META.表查詢,獲取存放目標資料的Region資訊,從而找到對應的RegionServer。
  • (3) 通過RegionServer獲取需要查詢的資料。
  • (4) Regionserver的記憶體分為MemStore和BlockCache兩部分,MemStore主要用於寫資料,BlockCache主要用於讀資料。讀請求先到MemStore中查資料,查不到就到BlockCache中查,再查不到就會到StoreFile上讀,並把讀的結果放入BlockCache。