【趙強老師】HBase的體系架構

一、什麼是HBase?

HBase是一個基於HDFS之上的分佈式的、面向列的開源數據庫,該技術來源於 Fay Chang 所撰寫的Google論文“BigTable大表”,即:把所有的數據存入一張表中。就像Bigtable利用了Google文件系統(File System)所提供的分佈式數據存儲一樣,HBase在Hadoop之上提供了類似於Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不同於一般的關係數據庫,它是一個適合於非結構化數據存儲的數據庫。另一個不同的是HBase基於列的而不是基於行的模式。

二、HBase的體系架構

HBase是由三種類型的服務器以主從模式構成的。這三種服務器分別是:HBase HMaster,Region server,ZooKeeper。

  • HBase HMaster負責Region的分配及數據庫的創建和刪除等操作。具體來說,HMaster的職責包括:
  1. HMaster負責region的分配。
  2. 調控Region server的工作
  3. 在集羣啓動的時候分配region,根據恢復服務或者負載均衡的需要重新分配region。
  4. 監控集羣中的Region server的工作狀態。
  5. 管理數據庫。提供創建,刪除或者更新表格的接口。
  • Region server負責數據的讀寫服務。用戶通過溝通Region server來實現對數據的訪問。

具體來說,RegionServer上存在若干個Region。HBase中的表是根據row key的值水平分割成所謂的region的。一個region包含表中所有row key位於region的起始鍵值和結束鍵值之間的行。每一個region的默認大小爲1GB。集羣中負責管理Region的結點叫做Region server。Region server負責數據的讀寫。每一個Region server大約可以管理1000個region。

  • ZooKeeper負責維護集羣的狀態(某臺服務器是否在線,服務器之間數據的同步操作及master的選舉等)。HBase中ZooKeeper的職責包含:
  1. 維護HBase服務器是否存活
  2. 監控HBase服務器是否可訪問的狀態
  3. 提供服務器故障/宕機的通知
  4. 同時還使用一致性算法來保證服務器之間的同步。
  5. 同時也負責Master選舉的工作。
  6. 需要注意的是要保證良好的一致性及順利的Master選舉,集羣中的服務器數目必須是奇數,例如三臺或五臺。

三、HBase的表結構

每一行有一個RowKey用於唯一地標識和定位行,各行數據按RowKey的字典序排列。其中ImployeeBasicInfoCLF和DetailInfoCLF是兩個列族,列族下又有多個具體列。(員工基本信息列族:姓名、年齡。詳細信息列族:薪水、角色)。

HBase數據模型

  • 命名空間:命名空間是對錶的邏輯分組,不同的命名空間類似於關係型數據庫中的不同的Database數據庫。利用命名空間,在多租戶場景下可做到更好的資源和數據隔離。
  • 表:對應於關係型數據庫中的一張張表,HBase以“表”爲單位組織數據,表由多行組成。
  • 行:由一個RowKey和多個列族組成,一個行有一個RowKey,用來唯一標示。
  • 列族:每一行由若干列族組成,每個列族下可包含多個列,如上ImployeeBasicInfoCLF和DetailInfoCLF即是兩個列族。列族是列共性的一些體現。注意:物理上,同一列族的數據存儲在一起的。
  • 列限定符:列由列族和列限定符唯一指定,像如上的name、age即是ImployeeBasicInfoCLF列族的列限定符。
  • 單元格:單元格由RowKey、列族、列限定符唯一定位,單元格之中存放一個值(Value)和一個版本號。
  • 時間戳:單元格內不同版本的值按時間倒序排列,最新的數據排在最前面

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章