HBase 高級架構解析

總體框架


使用 ZooKeeper 框架協助 RegionServer(相似於HDFS的nodemanager)用戶請求從 Client 到 Zookeeper 進行判斷數據屬於哪個 Region 輔助 HBase 進行數據存儲/檢索
主節點 Master (相似HDFS的ResourceManager) 管理 RegionServer ,數據不通過 Masterjava

物理模型

  • Table中多有行按照RowKey字典順序排列
  • Table在行的方向上分割爲多個Region

  • 隨着Region大小的增大,達到必定閾值的時候,會分裂成兩個新的Region
  • Table在行的方向上分割爲多個Region

數據寫入流程:put

  • Wal(Write Ahead Log) 預寫日誌(HLog)文件(HDFS/Hbase/目錄下):這個是修改日誌,不是整個文件?就像git同樣?
  • memStore
  • storeFile

完整架構圖HBase Architecture

數據存儲

客戶端 -> Zookeeper -> 獲得 hbase:meta 表的 RegionServer -> 客戶端從 meta 表中查得用戶所需表的 RegionServer -> put/get/scan ...node

1.nameSpace:相似於 RDBMS 中 Database 概念,用戶建立的表在 default namespace 下 ,系統自帶表在 hbase namespace 下

hbase:meta 表存儲了 HBase 中全部(本身除外)表的元數據信息
hbase:namespace 表存儲了 namespace 信息
# 顯示全部 namespace
> list_namespace

# 顯示 namespace 下的表
> list_namespace_tables 'hbase'

# 使用 hbase namespace 下的表 hbase:meta
> scan 'hbase:meta'

2.表數據存儲位置:hdfs://HBase/data/

HFile:HBase中KeyValue數據的存儲格式,是 Hadoop 的二進制文件格式,是 StoreFile 的輕量級包裝
HLog File:(Write Ahead Log) 預寫日誌(HLog)文件,在物理上是 Hadoop 的 Sequence File

3.預寫日誌文件目錄:hdfs://HBase/wals/

4.Zookeeper 做用:用戶申請數據首先通過 Zookeeper,Zokkeeper 中存儲了 mate 所在的 Region 被哪個 RegionServer 管理的信息。Hmaster 管理 RegionServer 的信息存儲在 Zookeeper 中

# 查看mate-server(bin/zkCli.sh)
$ get /hbase/meta-region-server

# 查看 RegionServer 信息(分文件夾存儲)
$ ls /hbase/rs

人工干預數據的讀寫

# 從 memStore 到 Hfile
$ flush 'tablename'

# 合併小文件
$ compact 'tablename'

各個組件的功能和做用(參考JAVA API 導包)

Client

  • 整個集羣的訪問入口
  • 使用 HBase RPC(Remote Procedure Call Protocol)——遠程過程調用協議 與 HMAster 和 HRegionServer 進行通訊
  • 與 HMAster 進行通訊,進行管理類操做(建立表,刪除表...)
  • 與 HRegionServer 進行數據讀寫類操做(put get ...)
  • 包含訪問 HBase 的接口,並維護 cache(緩存) 來加快對 HBase 的訪問

Zookeeper

  • 經過 Zookeeper 協做,容許開啓/存在多個 HMaster 但 Zookeeper 經過 Master Election 保證了任什麼時候候,集羣中只有一個 HMaster
  • 保存了全部的 HRegion 的尋址入口(Client 訪問 Zookeeper 找到 Region 的信息)
  • 實時監控 HRegionServer 的上線和下線信息,並通知給 HMaster
  • 存儲了 HBase 的全部表信息的元數據信息 namespace 的信息
  • 存儲了 meta 表和 HMaster 的地址

HMaster

  • HMaster 不存在單點問題,HBase 中能夠啓動多個 HMaster (詳情請看bin/master-backup.sh)經過 Zookeeper 經過 Master Election 保證了任什麼時候候,集羣中只有一個 HMaster 在運行,負責 Table 和 Region 的管理工做
  • 管理用戶對 Table 的增刪改查操做
  • 管理 HRegionServer 的負載平衡,調整 Region 分佈
  • Region Split 後,負責新 Region 的分佈
  • 在 HRegionServer 停機後,負責失效 HRegionServer 的 Region 轉移工做

HRegionServer

  • 維護 HRegion 處理 HRegion 的 IO 請求,向 HDFS 文件系統中讀寫數據
  • 負責 Region Split ,以後再交給 HMaster 調整 Region 分佈
  • 負責數據的訪問過程,數據不通過 HMater ,HMaster 僅僅維護 Table 和 Region 的元數據信息,負載很低<<尋址訪問 Zookeeper 和 HRegionServer ,數據訪問 HRegionServer >>(重點)
相關文章
相關標籤/搜索