HBase 系統架構
HBase是Apache Hadoop的資料庫,能夠對大型資料提供隨機、即時的讀寫訪問。HBase的目標是儲存並處理大型的資料。HBase是一個開源的,分布式的,多版本的,面向列的儲存模型。它儲存的是鬆散型資料。
HBase特性:
1 高可靠性
2 高效性
3 面向列
4 可伸縮
5 可在廉價PC Server搭建大規模結構化儲存叢集
HBase是Google BigTable的開源實現,其相互對應如下:
Google HBase
檔案儲存體系統 GFS HDFS
海量資料處理 MapReduce Hadoop MapReduce
協同服務管理 Chubby Zookeeper
HBase關係圖:
HBase位於結構化儲存層,圍繞HBase,各組件對HBase的支援情況:
Hadoop組件 作用
HDFS 高可靠的底層儲存支援
MapReduce 高效能的計算能力
Zookeeper 穩定服務和failover機制
Pig&Hive 高層語言支援,便於資料統計
Sqoop 提供RDBMS資料匯入,便於傳統資料庫向HBase遷移
訪問HBase的介面
方式 特點 場合
Native Java API 最常規和高效 Hadoop MapReduce Job平行處理HBase表資料
HBase Shell 最簡單介面 HBase管理使用
Thrift Gateway 利用Thrift序列化支援多種語言 異構系統線上訪問HBase表資料
Rest Gateway 解除語言限制 Rest風格Http API訪問
Pig Pig Latin六十程式設計語言處理資料 資料統計
Hive 簡單,SqlLike
HBase 資料模型
組成組件說明:
Row Key: Table主鍵 行鍵 Table中記錄按照Row Key排序
Timestamp: 每次對資料操作對應的時間戳記,也即資料的version number
Column Family: 列簇,一個table在水平方向有一個或者多個列簇,列簇可由任意多個Column組成,列簇支援動態擴充,無須預定義數量及類型,二進位儲存,使用者需自行進行類型轉換
Table&Region
1. Table隨著記錄增多不斷變大,會自動分裂成多份Splits,成為Regions
2. 一個region由[startkey,endkey)表示
3. 不同region會被Master分配給相應的RegionServer進行管理
兩張特殊表:-ROOT- & .META.
.META. 記錄使用者表的Region資訊,同時,.META.也可以有多個region
-ROOT- 記錄.META.表的Region資訊,但是,-ROOT-只有一個region
Zookeeper中記錄了-ROOT-表的location
用戶端訪問資料的流程:
Client -> Zookeeper -> -ROOT- -> .META. -> 使用者資料表
多次網路操作,不過client端有cache緩衝
HBase 系統架構圖
組成組件說明
Client:
使用HBase RPC機制與HMaster和HRegionServer進行通訊
Client與HMaster進行通訊進行管理類操作
Client與HRegionServer進行資料讀寫類操作
Zookeeper:
Zookeeper Quorum儲存-ROOT-表地址、HMaster地址
HRegionServer把自己以Ephedral方式註冊到Zookeeper中,HMaster隨時感知各個HRegionServer的健康情況
Zookeeper避免HMaster單點問題
HMaster:
HMaster沒有單點問題,HBase中可以啟動多個HMaster,通過Zookeeper的Master Election機制保證總有一個Master在運行
主要負責Table和Region的管理工作:
1 系統管理使用者對錶的增刪改查操作
2 管理HRegionServer的負載平衡,調整Region分布
3 Region Split後,負責新Region的分布
4 在HRegionServer停機後,負責失效HRegionServer上Region遷移
HRegionServer:
HBase中最核心的模組,主要負責響應使用者I/O請求,向HDFS檔案系統中讀寫資料
HRegionServer管理一些列HRegion對象;
每個HRegion對應Table中一個Region,HRegion由多個HStore組成;
每個HStore對應Table中一個Column Family的儲存;
Column Family就是一個集中的儲存單元,故將具有相同IO特性的Column放在一個Column Family會更高效
HStore:
HBase儲存的核心。由MemStore和StoreFile組成。
MemStore是Sorted Memory Buffer。使用者寫入資料的流程:
Client寫入 -> 存入MemStore,一直到MemStore滿 -> Flush成一個StoreFile,直至增長到一定閾值 -> 出發Compact合併作業 -> 多個StoreFile合并成一個StoreFile,同時進行版本合并和資料刪除 -> 當StoreFiles Compact後,逐步形成越來越大的StoreFile -> 單個StoreFile大小超過一定閾值後,觸發Split操作,把當前Region Split成2個Region,Region會下線,新Split出的2個孩子Region會被HMaster分配到相應的HRegionServer 上,使得原先1個Region的壓力得以分流到2個Region上
由此過程可知,HBase只是增加資料,有所得更新和刪除操作,都是在Compact階段做的,所以,使用者寫操作只需要進入到記憶體即可立即返回,從而保證I/O高效能。
HLog
引入HLog原因:
在分布式系統內容中,無法避免系統出錯或者宕機,一旦HRegionServer以外退出,MemStore中的記憶體資料就會丟失,引入HLog就是防止這種情況
工作機制:
每個HRegionServer中都會有一個HLog對象,HLog是一個實現Write Ahead Log的類,每次使用者操作寫入Memstore的同時,也會寫一份資料到HLog檔案,HLog檔案定期會滾動出新,並刪除舊的檔案(已持久化到 StoreFile中的資料)。當HRegionServer意外終止後,HMaster會通過Zookeeper感知,HMaster首先處理遺留的 HLog檔案,將不同region的log資料拆分,分別放到相應region目錄下,然後再將失效的region重新分配,領取到這些region的 HRegionServer在Load Region的過程中,會發現有曆史HLog需要處理,因此會Replay HLog中的資料到MemStore中,然後flush到StoreFiles,完成資料恢複。
HBase儲存格式
HBase中的所有資料檔案都儲存在Hadoop HDFS檔案系統上,格式主要有兩種:
1 HFile HBase中KeyValue資料的儲存格式,HFile是Hadoop的二進位格式檔案,實際上StoreFile就是對HFile做了輕量級封裝,即StoreFile底層就是HFile
2 HLog File,HBase中WAL(Write Ahead Log) 的儲存格式,物理上是Hadoop的Sequence File
HFile
圖片解釋:
HFile檔案不定長,長度固定的塊只有兩個:Trailer和FileInfo
Trailer中指標指向其他資料區塊的起始點
File Info中記錄了檔案的一些Meta資訊,例如:AVG_KEY_LEN, AVG_VALUE_LEN, LAST_KEY, COMPARATOR, MAX_SEQ_ID_KEY等
Data Index和Meta Index塊記錄了每個Data塊和Meta塊的起始點
Data Block是HBase I/O的基本單元,為了提高效率,HRegionServer中有基於LRU的Block Cache機制
每個Data塊的大小可以在建立一個Table的時候通過參數指定,大號的Block有利於順序Scan,小號Block利於隨機查詢
每個Data塊除了開頭的Magic以外就是一個個KeyValue對拼接而成, Magic內容就是一些隨機數字,目的是防止資料損毀
HFile裡面的每個KeyValue對就是一個簡單的byte數組。這個byte數組裡麵包含了很多項,並且有固定的結構。
KeyLength和ValueLength:兩個固定的長度,分別代表Key和Value的長度
Key部分:Row Length是固定長度的數值,表示RowKey的長度,Row 就是RowKey
Column Family Length是固定長度的數值,表示Family的長度
接著就是Column Family,再接著是Qualifier,然後是兩個固定長度的數值,表示Time Stamp和Key Type(Put/Delete)
Value部分沒有這麼複雜的結構,就是純粹的位元據
HLog File
HLog檔案就是一個普通的Hadoop Sequence File,Sequence File 的Key是HLogKey對象,HLogKey中記錄了寫入資料的歸屬資訊,除了table和region名字外,同時還包括 sequence number和timestamp,timestamp是“寫入時間”,sequence number的起始值為0,或者是最近一次存入檔案系統中sequence number。
HLog Sequece File的Value是HBase的KeyValue對象,即對應HFile中的KeyValue
Hadoop+HBase搭建雲端儲存總結 PDF
HBase 結點之間時間不一致造成regionserver啟動失敗
Hadoop+ZooKeeper+HBase叢集配置
Hadoop叢集安裝&HBase實驗環境搭建
基於Hadoop叢集的HBase叢集的配置 ‘
Hadoop安裝部署筆記之-HBase完全分布模式安裝
單機版搭建HBase環境圖文教程詳解
HBase 的詳細介紹:請點這裡
HBase 的:請點這裡
本文永久更新連結地址: