hbase理論總結

HBase

HBase – Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮的分佈式存儲系統,利用HBase 技術可在廉價 PC Server 上搭建起大規模結構化存儲集羣。

HBase簡介

HBase 是 Apache Hadoop 中的一個子項目,HBase 依託於 Hadoop 的 HDFS 作爲最基本存儲基礎單元,通過使用hadoop的DFS 工具就可以看到這些這些數據存儲文件夾的結構,還可以通過 Map/Reduce的框架(算法)對 HBase進行操作。

HBase適用場景

  1. 大數據量存儲,大數據量高併發操作
  2. 需要對數據隨機讀寫操作
  3. 讀寫訪問均是非常簡單的操作

HBase數據模型

HBase 以表的形式存儲數據。表由行和列族組成。列劃分爲若干個列族(row family)

  1. 行鍵(RowKey)
  • 行鍵是字節數組, 任何字符串都可以作爲行鍵;
  • 表中的行根據行鍵進行排序,數據按照 Row key 的字節序(byte order)排序存儲;
  • 所有對錶的訪問都要通過行鍵 (單個 RowKey 訪問,或RowKey範圍訪問,或全表掃描)
  1. 列族(ColumnFamily)
  • CF 必須在表定義時給出
  • 每個 CF 可以有一個或多個列成員(ColumnQualifier),列成員不需要在表定義時給出,新的列族成員可以隨後按需、動態加入
  • 數據按 CF 分開存儲,Hbase 所謂的列式存儲就是根據 CF 分開存儲(每個CF 對應一個 Store),這種設計非常適合於數據分析的情形
  1. 時間戳(TimeStamp)
  • 每個 Cell可能又多個版本,它們之間用時間戳區分
  1. 單元格(Cell)
  • Cell 由行鍵,列族:限定符,時間戳唯一決定

  • Cell中的數據是沒有類型的,全部以字節碼形式存儲

  1. 區域(Region)
  • HBase 自動把表水平(按 Row)劃分成多個區域(region),每個region 會保存一個表裏面某段連續的數據;
  • 每個表一開始只有一個region,隨着數據不斷插入表,region不斷增大,當增大到一個閥值的時候,region 就會等分會兩個新的region;
  • 當 table 中的行不斷增多,就會有越來越多的 region。這樣一張完整的表被保存在多個Region 上。
  • Region 雖然是分佈式存儲的最小單元,但並不是存儲的最小單元。Region由一個或者多個 Store 組成,每個 store 保存一個 columns family;每個Strore又由一個memStore和0至多個StoreFile組成, StoreFile包含HFile;memStore存儲在內存中,StoreFile 存儲在HDFS上

HBase架構及基本組件

1)Client:

  • 包含訪問HBase的接口,並維護cache來加快對HBase的訪問,比如region的位置信息。

2)Master

  • 爲Region server分配region
  • 負責Region server的負載均衡
  • 發現失效的Region server並重新分配其上的region
  • 管理用戶對table的增刪改查操作

3)Region Server

  • Regionserver維護region,處理對這些region的IO請求
  • Regionserver負責切分在運行過程中變得過大的region

4)Zookeeper

  • 通過選舉,保證任何時候,集羣中只有一個Master,Master與Regionservers啓動時會向ZooKeeper註冊
  • 存儲所有Region的尋址入口
  • 實時監控Region server的上線和下線信息,並實時通知給Master
  • 存儲HBase的schema和table元數據
  • 默認情況下,HBase管理ZooKeeper實例,比如,啓動或者停止ZooKeeper
  • ZooKeeper的引入是的Master不再是單點故障

HBase容錯與恢復

每個 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,完成數據恢復

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