日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

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

導(dǎo)讀:HBase是一個構(gòu)建在HDFS之上的、分布式的、支持多版本的NoSQL數(shù)據(jù)庫,它的出現(xiàn)補(bǔ)齊了大數(shù)據(jù)場景下快速查詢數(shù)據(jù)能力的短板。它非常適用于對平臺中的熱數(shù)據(jù)進(jìn)行存儲并提供查詢功能。

作者:朱凱

來源:華章科技

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

 

01 概述

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

但是這還不夠,我們在大數(shù)據(jù)領(lǐng)域還沒有一款能夠稱為數(shù)據(jù)庫的產(chǎn)品。就在2006年年末,google發(fā)表了著名的Bigtable論文。此后HBase便誕生了。

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

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

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

▲圖2-6 HBase邏輯架構(gòu)圖

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

HBase采用主從架構(gòu)。其分布式協(xié)調(diào)是通過Zookeeper進(jìn)行管理的,而數(shù)據(jù)的物理存儲最終會以文件的形式存儲到HDFS。

02 數(shù)據(jù)模型

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

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

▲圖2-7 HBase的四維數(shù)據(jù)模型

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

03 Regions

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

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

▲圖2-8 HBase Regions的邏輯結(jié)構(gòu)

一個Region Server包含了多個Region,每個Region包含了一部分?jǐn)?shù)據(jù)。

04 HBase Master

HBase Master主要負(fù)責(zé)Region的分配和一些DDL操作,如圖2-9所示。HBase Master在啟動、失敗恢復(fù)或者負(fù)載均衡的時候?yàn)閞egion指定所屬的RegionServer,或者是創(chuàng)建、刪除和更新表的這類操作。

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

▲圖2-9 HBase Master的邏輯結(jié)構(gòu)

HMaster作為主控節(jié)點(diǎn)并不直接存儲數(shù)據(jù),它只是做一些統(tǒng)籌分配和DDL操作。

05 Region Server

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

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

▲圖2-10 Region Server的邏輯結(jié)構(gòu)

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

06 MemStore與HFile

為了提高數(shù)據(jù)寫入時的吞吐量,HBase并不會實(shí)時的將寫入的數(shù)據(jù)直接刷入磁盤,而是先將數(shù)據(jù)放入內(nèi)存中進(jìn)行保管,MemStroe對象就是負(fù)責(zé)此項(xiàng)任務(wù)的邏輯對象,它將數(shù)據(jù)以Key-Values的形式保存在內(nèi)存中。

將數(shù)據(jù)直接放入內(nèi)存讀寫雖然很快,但這樣做并不安全,因?yàn)橐坏┓?wù)器重啟數(shù)據(jù)便會全部丟失。所以HBase在此處設(shè)計(jì)了一種預(yù)寫日志結(jié)合MemStroe的方式來解決這個問題。

當(dāng)客戶端向HBase發(fā)起一次寫入請求的時候,HBase首先會通過RegionServer將數(shù)據(jù)寫入預(yù)寫日志,之后再用MemStroe對象將數(shù)據(jù)保存到內(nèi)存之中。由于有了預(yù)寫日志,當(dāng)服務(wù)出現(xiàn)故障重啟之后,Region可以通過日志將數(shù)據(jù)復(fù)原到MemStroe。

HBase的這種寫入策略極大地提升了其數(shù)據(jù)寫入的吞吐量,因?yàn)橐坏懭肴罩镜膭幼魍瓿闪司退銓懭霐?shù)據(jù)成功。同時預(yù)寫日志是對磁盤文件的順序?qū)懭氩僮鳎鋵懭胨俣纫彩值难杆佟?/p>

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

HFile是HBase最終存儲數(shù)據(jù)的載體,它本質(zhì)上對應(yīng)的是HDFS的文件。因?yàn)镠File是以經(jīng)過排序的Key-Values對象的形式進(jìn)行存儲的,所以它的在寫入文件的時候只需要采用順序?qū)?,寫入速度非常快。HFile的邏輯架構(gòu)如圖2-11所示。

07 使用場景

HBase由于它強(qiáng)大的存儲和查詢性能使得它在大數(shù)據(jù)領(lǐng)域成為一個多面手。

1. 平臺存儲

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

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

▲圖2-11 Region Server的邏輯結(jié)構(gòu)

2. 應(yīng)用存儲/緩存

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

關(guān)于作者:朱凱,資深大數(shù)據(jù)專家和架構(gòu)師,擁有10年IT從業(yè)經(jīng)驗(yàn),精通大數(shù)據(jù)、JAVA、Node.JS等技術(shù)。對大數(shù)據(jù)領(lǐng)域的主流技術(shù)與解決方案有深入研究,擅長分布式系統(tǒng)的架構(gòu)設(shè)計(jì)與整合。曾主導(dǎo)過多款大數(shù)據(jù)平臺級產(chǎn)品的規(guī)劃設(shè)計(jì)與研發(fā)工作,一線實(shí)戰(zhàn)經(jīng)驗(yàn)豐富。

本文摘編自《企業(yè)級大數(shù)據(jù)平臺構(gòu)建:架構(gòu)與實(shí)現(xiàn)》,經(jīng)出版方授權(quán)發(fā)布。

分享到:
標(biāo)簽:HBase
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

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

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定