【每日五分鐘搞定大數據】系列,HBase第三篇
緩存
聊完場景和數據模型咱們來講下HBase的架構,在網上找了張比較清晰的圖,我以爲這張圖能說明不少問題,那這一篇咱們就重點來解析下這張圖服務器
先介紹下上圖中的幾個角色和Ta們的職責:架構
1.HMaster負載均衡
2.Client分佈式
Client包含訪問HBase的接口,並維護cache(region的位置信息)來加快對HBase的訪問大數據
3.Zookeeperspa
在以前的Zookeeper篇講過HBase和Zookeeper的聯繫,忘記地同窗能夠去翻一下。3d
4.HRegionSeverserver
即一臺服務器,擁有一個到多個HRegionblog
圖裏HRegionServer裏面的內容不少,你們可能會看得有點懵,咱們來詳細說下這個HRegionServer裏面的東西。
HRegionServer 包含 (1+)個 Region
一個 HRegionServer 包含一到多個Region,而Region就是一張HBase表按必定閾值橫向切割的一部分。
Region按大小分割的,每一個表開始只有一個region,隨着數據增多,region不斷增大,當增大到一個閥值的時候,region就會等分會兩個新的region,以後會有愈來愈多的region;
Region是Hbase中分佈式存儲和負載均衡的最小單元,不一樣Region分佈到不一樣RegionServer上;
Region 包含 (1+)個 Store = columns family 列族個數
Region由一個或者多個Store組成,每一個store保存一個columns family;
Store 是一個抽象的概念就是一個存儲,它的個數和HDFS上的存儲目錄個數是一致的,而一個存儲目錄對應的就是一個columns family列族。
Store 包含(1)個 MemStore +(0+)個 StoreFile
Store 上面說了就是一個存儲,他包含了一個內存的存儲和0+個文件存儲,一個Store的全部文件都存在一個目錄下,這個目錄下的全部文件對應的是一個列族。
注意:
上面說得可能有點抽象,咱們來看具體的數據:
咱們來沿用下上一篇的那個表:
如表:
假設這張表有幾萬行,一行就表明一萬行,那可能A和B多是屬於RegionA,C和D多是屬於RegionB,
RegionA和RegionB可能分佈在不一樣的RegionServer上,
可見,RegionA有兩個列族,CF1和CF2,
即它有兩個Store,
即在HDFS上有兩個目錄分別用於存放CF1和CF2,
即CF1和CF2在內存裏也分別各對應了一個MemStore
這裏先講個大概,後面的文章我會每一步詳細分析,好比region的分裂過程,StoreFile的合併過程,rowkey的定位詳細流程等等,歡迎持續關注。
.META.:根據給定的key找到RegionServer。.META.記錄全部的用戶空間region列表,以及RegionServer的服務器地址。
把數據分別寫到HLog和MemStore上一份
MemStore達到一個閾值後則把數據刷成一個StoreFile文件。若MemStore中的數據有丟失,則能夠總HLog上恢復
當多個StoreFile文件達到必定的大小後,會觸發Compact合併操做,合併爲一個StoreFile,這裏同時進行版本的合併和數據刪除。
當Compact後,逐步造成愈來愈大的StoreFIle後,會觸發Split操做,把當前的StoreFile分紅兩個,這裏至關於把一個大的region分割成兩個region
client端會對數據塊緩存
在hlog中作標記點。
注意:hlog會同步到hdfs