亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

導讀:HBase是一個構建在HDFS之上的、分布式的、支持多版本的NoSQL數據庫,它的出現補齊了大數據場景下快速查詢數據能力的短板。它非常適用于對平臺中的熱數據進行存儲并提供查詢功能。

作者:朱凱

來源:華章科技

什么是HBase?它是怎樣工作的?終于有人講明白了

 

01 概述

HBase的出現很好地彌補了大數據快速查詢能力的空缺。讓我們再次將時間撥回到2006年,那時Hadoop項目已經正式啟動,開源社區已經擁有了HDFS和MapReduce。通過HDFS我們擁有了能夠存儲海量文件的分布式文件系統。通過MapReduce我們擁有了一種對海量數據進行批處理操作的途徑。

但是這還不夠,我們在大數據領域還沒有一款能夠稱為數據庫的產品。就在2006年年末,google發表了著名的Bigtable論文。此后HBase便誕生了。

HBase是一個構建在HDFS之上的、分布式的、支持多版本的NoSql數據庫。它也是Google BigTable的開源實現。HBase非常適合于對海量數據進行實時隨機讀寫。HBase中的一張表能夠支撐數十億行和數百萬列。

HBase從設計上來講是一個由三類服務組成的Master/Slave架構服務。HBase Master進程負責處理Region分配、DDL(create、delete表)這類操。數據的讀寫由RegionServers進程負責處理。底層數據存儲和集群協同管理則交由HDFS和Zookeeper進行管理,如圖2-6所示。

什么是HBase?它是怎樣工作的?終于有人講明白了

▲圖2-6 HBase邏輯架構圖

HBase的所有數據最終都以HDFS文件的形式進行存儲,Region Server服務通常是伴隨著HDFS的Datanode進行部署的,這樣可以更好地利用數據本地性的優勢。

HBase采用主從架構。其分布式協調是通過Zookeeper進行管理的,而數據的物理存儲最終會以文件的形式存儲到HDFS。

02 數據模型

HBase是一個NoSQL數據庫,它通過一個四維數據模型定義數據,如圖2-7所示。

  • RowKey:HBase中的每行數據都必須擁有一個唯一的行鍵,它類似于關系型數據庫中的主鍵。
  • Column Family:HBase中的每個列都歸屬于一個列簇,它類似于子表的概念。一個列簇對應一個MemStore對象。
  • Column:HBase用列來定義數據屬性字段,和關系型數據庫中的表字段類似。
  • Version:HBase中的數據是有版本概念的,每次新增或者修改數據都會產生一個新的版本。
什么是HBase?它是怎樣工作的?終于有人講明白了

▲圖2-7 HBase的四維數據模型

HBase的數據模型由行鍵、列簇、列名和版本號組成。

03 Regions

HBase的表以RowKey的起止區間為范圍被水平切分成了多個Region。每個Region中包含了RowKey從開始到結束區間的所有行。這些Region被分配到的集群節點稱為RegionServers,RegionServers負責提供HBase中數據的讀寫功能。一個RegionServer可以容納大約1000個Region,如圖2-8所示。

什么是HBase?它是怎樣工作的?終于有人講明白了

▲圖2-8 HBase Regions的邏輯結構

一個Region Server包含了多個Region,每個Region包含了一部分數據。

04 HBase Master

HBase Master主要負責Region的分配和一些DDL操作,如圖2-9所示。HBase Master在啟動、失敗恢復或者負載均衡的時候為region指定所屬的RegionServer,或者是創建、刪除和更新表的這類操作。

什么是HBase?它是怎樣工作的?終于有人講明白了

▲圖2-9 HBase Master的邏輯結構

HMaster作為主控節點并不直接存儲數據,它只是做一些統籌分配和DDL操作。

05 Region Server

之前我們提到過,為了利用HDFS數據本地性的能力,通常會將RegionServer一同安裝在HDFS的Datanode所在的服務器之上,如圖2-10所示。RegionServer自身包含這么幾個部分:

  • WAL:預寫日志是HDFS上的一個文件,它是一種容災策略。HBase為了提高寫入性能,在寫入數據的時候并不急于將數據保存到磁盤,而是將數據直接保留在內存中。但是內存中的數據并不是一直可靠的,所以HBase采用了預寫日志的方案。當有新數據寫入的時候,RegionServer先通過預寫日志的方式記錄數據,同時將數據放入內存對象MemStore中。當日志寫完之后就立刻返回客戶端告知寫入成功。
  • BlockCache:數據塊緩存是一種讀緩存,客戶端讀取數據的時候會先從這個緩存中查找有沒相應的數據。塊數據緩存采用LRU失效策略。
  • MemStore:MemStore是一種寫緩存,HBase為了提升寫入性能不會直接將數據刷入磁盤而是先使用MemStore內存對象存儲數據。再通過一個守護線程定期將MemStore刷入磁盤。在一個region中每個列簇都擁有一個MemStore。
  • Hfile:Hfile是HBase最終數據存儲的載體,它本質上是HDFS上的一個文件。
什么是HBase?它是怎樣工作的?終于有人講明白了

▲圖2-10 Region Server的邏輯結構

Region Server是HBase中真正存儲數據的地方,它主要由WAL、BlockCache、MemStore和HFile組成。

06 MemStore與HFile

為了提高數據寫入時的吞吐量,HBase并不會實時的將寫入的數據直接刷入磁盤,而是先將數據放入內存中進行保管,MemStroe對象就是負責此項任務的邏輯對象,它將數據以Key-Values的形式保存在內存中。

將數據直接放入內存讀寫雖然很快,但這樣做并不安全,因為一旦服務器重啟數據便會全部丟失。所以HBase在此處設計了一種預寫日志結合MemStroe的方式來解決這個問題。

當客戶端向HBase發起一次寫入請求的時候,HBase首先會通過RegionServer將數據寫入預寫日志,之后再用MemStroe對象將數據保存到內存之中。由于有了預寫日志,當服務出現故障重啟之后,Region可以通過日志將數據復原到MemStroe。

HBase的這種寫入策略極大地提升了其數據寫入的吞吐量,因為一旦寫入日志的動作完成了就算寫入數據成功。同時預寫日志是對磁盤文件的順序寫入操作,其寫入速度也十分的迅速。

但是,畢竟內存空間是有限的,MemStroe不可能沒有限制的存儲數據。所以當一個MemStroe存儲的數據達到某個閾值的時候,HBase會將這個MemStroe的數據通過HFile的形式寫入磁盤并清空該MemStroe。

HFile是HBase最終存儲數據的載體,它本質上對應的是HDFS的文件。因為HFile是以經過排序的Key-Values對象的形式進行存儲的,所以它的在寫入文件的時候只需要采用順序寫,寫入速度非常快。HFile的邏輯架構如圖2-11所示。

07 使用場景

HBase由于它強大的存儲和查詢性能使得它在大數據領域成為一個多面手。

1. 平臺存儲

由于HBase構建在HDFS之上,這意味著它能像HDFS一樣實現存儲的線性擴容。同時它又能提供毫秒級的查詢性能。所以它可以作為其他大數據組件的低層存儲支持。比如Apache Kylin就是使用HBase作為其數據索引的存儲載體。

什么是HBase?它是怎樣工作的?終于有人講明白了

▲圖2-11 Region Server的邏輯結構

2. 應用存儲/緩存

由于HBase出色的寫入性能,它非常適合大規模數據的實時寫入場景。比如在流計算、用戶行為數據存儲等場景就非常適合用HBase進行存儲。

關于作者:朱凱,資深大數據專家和架構師,擁有10年IT從業經驗,精通大數據、JAVA、Node.JS等技術。對大數據領域的主流技術與解決方案有深入研究,擅長分布式系統的架構設計與整合。曾主導過多款大數據平臺級產品的規劃設計與研發工作,一線實戰經驗豐富。

本文摘編自《企業級大數據平臺構建:架構與實現》,經出版方授權發布。

分享到:
標簽:HBase
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定