HBase詳細簡介

什麼是HBase

HBase的原型是Google的BigTable論文,受到了該論文思想的啓發,目前作爲Hadoop的子項目來開發維護,用於支持結構化的數據存儲。
官方網站:http://hbase.apache.org
– 2006年Google發表BigTable白皮書
– 2006年開始開發HBase
– 2008年北京成功開奧運會,程序員默默地將HBase弄成了Hadoop的子項目
– 2010年HBase成爲Apache頂級項目
– 現在很多公司二次開發出了很多發行版本,你也開始使用了。
HBase是一個高可靠性、高性能、面向列、可伸縮的分佈式存儲系統,利用HBASE技術可在廉價PC Server上搭建起大規模結構化存儲集羣。
HBase的目標是存儲並處理大型的數據,更具體來說是僅需使用普通的硬件配置,就能夠處理由成千上萬的行和列所組成的大型數據。
HBase是Google Bigtable的開源實現,但是也有很多不同之處。比如:Google Bigtable利用GFS作爲其文件存儲系統,HBase利用Hadoop HDFS作爲其文件存儲系統;Google運行MAPREDUCE來處理Bigtable中的海量數據,HBase同樣利用Hadoop MapReduce來處理HBase中的海量數據;Google Bigtable利用Chubby作爲協同服務,HBase利用Zookeeper作爲對應。

Hbase特點

海量存儲

Hbase適合存儲PB級別的海量數據,在PB級別的數據以及採用廉價PC存儲的情況下,能在幾十到百毫秒內返回數據。這與Hbase的極易擴展性息息相關。正式因爲Hbase良好的擴展性,才爲海量數據的存儲提供了便利。

列式存儲

這裏的列式存儲其實說的是列族(ColumnFamily)存儲,Hbase是根據列族來存儲數據的。列族下面可以有非常多的列,列族在創建表的時候就必須指定。

極易擴展

Hbase的擴展性主要體現在兩個方面,一個是基於上層處理能力(RegionServer)的擴展,一個是基於存儲的擴展(HDFS)。
通過橫向添加RegionSever的機器,進行水平擴展,提升Hbase上層的處理能力,提升Hbsae服務更多Region的能力。
備註:RegionServer的作用是管理region、承接業務的訪問,這個後面會詳細的介紹通過橫向添加Datanode的機器,進行存儲層擴容,提升Hbase的數據存儲能力和提升後端存儲的讀寫能力。

高併發(多核)

由於目前大部分使用Hbase的架構,都是採用的廉價PC,因此單個IO的延遲其實並不小,一般在幾十到上百ms之間。這裏說的高併發,主要是在併發的情況下,Hbase的單個IO延遲下降並不多。能獲得高併發、低延遲的服務。

稀疏

稀疏主要是針對Hbase列的靈活性,在列族中,你可以指定任意多的列,在列數據爲空的情況下,是不會佔用存儲空間的。

HBase架構

 HBase架構圖
從圖中可以看出Hbase是由Client、Zookeeper、Master、HRegionServer、HDFS等幾個組件組成,下面來介紹一下幾個組件的相關功能:

  1. Client
    Client包含了訪問Hbase的接口,另外Client還維護了對應的cache來加速Hbase的訪問,比如cache的.META.元數據的信息。
  2. Zookeeper
    HBase通過Zookeeper來做master的高可用、RegionServer的監控、元數據的入口以及集羣配置的維護等工作。具體工作如下:
    通過Zoopkeeper來保證集羣中只有1個master在運行,如果master異常,會通過競爭機制產生新的master提供服務
    通過Zoopkeeper來監控RegionServer的狀態,當RegionSevrer有異常的時候,通過回調的形式通知Master RegionServer上下線的信息
    通過Zoopkeeper存儲元數據的統一入口地址
  3. Hmaster(NameNode)
    master節點的主要職責如下:
    爲RegionServer分配Region
    維護整個集羣的負載均衡
    維護集羣的元數據信息
    發現失效的Region,並將失效的Region分配到正常的RegionServer上
    當RegionSever失效的時候,協調對應Hlog的拆分
  4. HregionServer(DataNode)
    HregionServer直接對接用戶的讀寫請求,是真正的“幹活”的節點。它的功能概括如下:
    管理master爲其分配的Region
    處理來自客戶端的讀寫請求
    負責和底層HDFS的交互,存儲數據到HDFS
    負責Region變大以後的拆分
    負責Storefile的合併工作
  5. HDFS
    HDFS爲Hbase提供最終的底層數據存儲服務,同時爲HBase提供高可用(Hlog存儲在HDFS)的支持,具體功能概括如下:
    提供元數據和表數據的底層分佈式存儲服務
    數據多副本,保證的高可靠和高可用性
    #HBase中的角色

HMaster

功能
1.監控RegionServer
2.處理RegionServer故障轉移
3.處理元數據的變更
4.處理region的分配或轉移
5.在空閒時間進行數據的負載均衡
6.通過Zookeeper發佈自己的位置給客戶端

RegionServer

功能
1.負責存儲HBase的實際數據
2.處理分配給它的Region
3.刷新緩存到HDFS
4.維護Hlog
5.執行壓縮
6.負責處理Region分片

其他組件

Write-Ahead logs

HBase的修改記錄,當對HBase讀寫數據的時候,數據不是直接寫進磁盤,它會在內存中保留一段時間(時間以及數據量閾值可以設定)。但把數據保存在內存中可能有更高的概率引起數據丟失,爲了解決這個問題,數據會先寫在一個叫做Write-Ahead logfile的文件中,然後再寫入內存中。所以在系統出現故障的時候,數據可以通過這個日誌文件重建。

Region

Hbase表的分片,HBase表會根據RowKey值被切分成不同的region存儲在RegionServer中,在一個RegionServer中可以有多個不同的region。

Store

HFile存儲在Store中,一個Store對應HBase表中的一個列族(列簇, Column Family)。
4. MemStore
顧名思義,就是內存存儲,位於內存中,用來保存當前的數據操作,所以當數據保存在WAL中之後,RegsionServer會在內存中存儲鍵值對。

HFile

這是在磁盤上保存原始數據的實際的物理文件,是實際的存儲文件。StoreFile是以Hfile的形式存儲在HDFS的。

關注微信公衆號
簡書:https://www.jianshu.com/u/0278602aea1d
CSDN:https://blog.csdn.net/u012387141

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