HBase(Hadoop Database)是一個(gè)高可靠性、高性能、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng),利用HBase技術(shù)可在廉價(jià)PC Server上搭建起大規(guī)模結(jié)構(gòu)化存儲(chǔ)集群,Hypertable則是搜索引擎公司Zvents以Google發(fā)布的BigTable為基礎(chǔ),推出的一款開源分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)。這兩類分布式存儲(chǔ)系統(tǒng)通常被用于新興互聯(lián)網(wǎng)架構(gòu)或者云計(jì)算、云存儲(chǔ)架構(gòu)中。
兩者都是模仿谷歌BigTable數(shù)據(jù)庫設(shè)計(jì)而成,主要區(qū)別是Hypertable依靠C++語言實(shí)現(xiàn),而HBase則基于Java編寫。我們最近做了一項(xiàng)實(shí)驗(yàn),比較0.9.5.5版本的Hypertable和0.90.4版本的HBase運(yùn)行zookeeper時(shí)的性能,結(jié)論是:Hypertable在吞吐量測試中的成績是HBase的2倍。而且HBase在410億和1670億數(shù)據(jù)測試中存在數(shù)據(jù)溢出問題。不過在隨機(jī)讀取測試中這兩個(gè)系統(tǒng)的測試結(jié)果基本相同。
測試環(huán)境介紹
本次測試的環(huán)境是通過千兆網(wǎng)絡(luò)連在一起的16臺(tái)服務(wù)器。
本機(jī)的配置是:
OS:CentOS 6.1
CPU:兩顆AMD C32六核心2.1GHz
內(nèi)存:24GB 1333 MHz DDR3
磁盤:四塊 西部數(shù)據(jù)RE4-GP WD2002FYPS(2TB SATA )
服務(wù)器test 01上運(yùn)行分布式文件系統(tǒng)、分布式存儲(chǔ)系統(tǒng)Hypertable和HBase的主節(jié)點(diǎn),在test04-test15上運(yùn)行數(shù)據(jù)節(jié)點(diǎn)和機(jī)器配置的有效RAM, ZooKeeper和Hyperspace的副本運(yùn)行在test01-test03上,測試中表配置使用快速壓縮,并且使用Bloom過濾器按一定規(guī)則進(jìn)行過濾。我們查閱了介紹如何設(shè)置并完成此次測試的整個(gè)Hypertable VS HBase II測試報(bào)告,盡可能調(diào)整HBase實(shí)現(xiàn)最佳性能和配置細(xì)節(jié)。
隨機(jī)寫入測試
在隨機(jī)寫入測試中,Hypertable和HBase分別測試寫入4個(gè)不同的5TB數(shù)據(jù)。使用值大小分別為10000、1000、100和10。其中關(guān)鍵一步是將20字節(jié)作為隨機(jī)寫入的零填充來格式化。
以下圖表為測試結(jié)果
下表提供了詳細(xì)的性能測試結(jié)果
從圖中我們可以看出HBase在410億以及1670億的關(guān)鍵測試中由于HBase的RegionServers并發(fā)模式失敗而寫入異常。無論如何配置,當(dāng)RegionServer產(chǎn)生垃圾數(shù)據(jù)的速度超過Java垃圾收集器回收垃圾數(shù)據(jù)的速度就會(huì)發(fā)生上面的異常情況。雖然我們可以設(shè)計(jì)一個(gè)垃圾數(shù)據(jù)回收計(jì)劃來克服這些問題,不過這樣的話會(huì)在運(yùn)行時(shí)給性能帶來沉重的代價(jià)。
隨機(jī)讀取測試
此次測試?yán)靡唤M隨機(jī)讀取請(qǐng)求通過查詢吞吐量的方法來測試。每個(gè)系統(tǒng)跑兩個(gè)不同的測試,一個(gè)測試采用Zipfian分布,另一個(gè)測試采用均勻分布。同時(shí),對(duì)插入的鍵大小固定為20字節(jié),值大小則固定為1KB。鍵取值范圍來自ASCII中的整數(shù),每次查詢測試返回一對(duì)鍵值。在每個(gè)系統(tǒng)上分別跑兩次測試,一次加載5TB的數(shù)據(jù),另一次加載0.5TB的數(shù)據(jù)。這樣能夠測量出每個(gè)系統(tǒng)下內(nèi)存到磁盤性能系數(shù)的高低。在加載5TB測試中共載入4,901,960,784的鍵值,而加載0.5TB測試中共載入490,196,078的鍵值。測試客戶端跑了128個(gè)進(jìn)程(總共為512進(jìn)程),每個(gè)進(jìn)程都可以在任何時(shí)間得到512次查詢,這意味著每個(gè)測試都發(fā)出1億次查詢。
Zipfian分布式環(huán)境測試
在這個(gè)測試中,我們布置了一個(gè)Zipfian分布環(huán)境,發(fā)現(xiàn)當(dāng)指數(shù)的值為0.8時(shí),20%的鍵利用了80%的時(shí)間來實(shí)現(xiàn)。所以我們在測試中將Hypertable查詢緩存配置為2GB,同時(shí)為了使HBase保持良好性能,將HBase的block cache和memstore限制使用默認(rèn)值。測試結(jié)果見下圖
下表提供了詳細(xì)的性能測試結(jié)果
導(dǎo)致性能差異主要原因是Hypertable提供了查詢緩存。當(dāng)然用HBase也可以實(shí)現(xiàn)查詢緩存,但它是HBase的子系統(tǒng)而且這個(gè)子系統(tǒng)生成了很多垃圾。雖然用HBase查詢緩存會(huì)提高HBase測試性能,但同時(shí)也帶來了一些弊端,尤其是在超大規(guī)模寫入以及超大單元計(jì)算的混合工作負(fù)載下。
在測試中出現(xiàn)了一個(gè)有趣的現(xiàn)象,在我們增加了兩個(gè)系統(tǒng)緩存塊的大小后對(duì)性能產(chǎn)生了不利影響。事實(shí)上系統(tǒng)內(nèi)有大量閑置CPU計(jì)算能力以維持減輕壓力需求,通過消除高速緩存塊來存儲(chǔ)未壓縮塊,同時(shí)依靠操作系統(tǒng)的文件緩存可獲取更好的性能,因?yàn)檫@樣可以在內(nèi)存中容納更多的數(shù)據(jù)集。
均勻分布測試環(huán)境
查詢用的鍵都遵循均勻分布的原則,下圖為測試結(jié)果
下表提供了詳細(xì)的性能測試結(jié)果
在均勻分布測試中HBase的性能接近Hypertable,這應(yīng)該是磁盤IO瓶頸以及測試中產(chǎn)生一些垃圾數(shù)據(jù)導(dǎo)致。
結(jié)論
在過去5年,Hypertable社區(qū)一直在致力于努力完善產(chǎn)品。得到這些結(jié)果我們很開心,我們可以繼續(xù)進(jìn)行效能改善項(xiàng)目,目標(biāo)是將Hypertable構(gòu)建成為大數(shù)據(jù)領(lǐng)域高性能、高擴(kuò)展性的數(shù)據(jù)庫解決方案。