本次測(cè)試主要評(píng)估線(xiàn)上HBase的整體性能,量化當(dāng)前HBase的性能指標(biāo),對(duì)各種場(chǎng)景下HBase性能表現(xiàn)進(jìn)行評(píng)估,為業(yè)務(wù)應(yīng)用提供參考。本篇文章主要介紹此次測(cè)試的基本條件,HBase在各種測(cè)試場(chǎng)景下的性能指標(biāo)(主要包括單次請(qǐng)求平均延遲和系統(tǒng)吞吐量)以及對(duì)應(yīng)的資源利用情況,并對(duì)各種測(cè)試結(jié)果進(jìn)行分析。
測(cè)試環(huán)境
測(cè)試環(huán)境包括測(cè)試過(guò)程中HBase集群的拓?fù)浣Y(jié)構(gòu)、以及需要用到的硬件和軟件資源,硬件資源包括:測(cè)試機(jī)器配置、網(wǎng)絡(luò)狀態(tài)等等,軟件資源包括操作系統(tǒng)、HBase相關(guān)軟件以及測(cè)試工具等。
集群拓?fù)浣Y(jié)構(gòu)
本次測(cè)試中,測(cè)試環(huán)境總共包含4臺(tái)SA5212H2物理機(jī)作為數(shù)據(jù)存儲(chǔ)。生成數(shù)據(jù)的YCSB程序與數(shù)據(jù)庫(kù)并不運(yùn)行在相同的物理集群。

單臺(tái)機(jī)器主機(jī)硬件配置

軟件版本信息

測(cè)試工具

YCSB全稱(chēng)Yahoo! Cloud Serving Benchmark,是Yahoo公司開(kāi)發(fā)的專(zhuān)門(mén)用于NoSQL測(cè)試的基準(zhǔn)測(cè)試工具。github地址:https://github.com/brianfrankcooper/YCSB YCSB支持各種不同的數(shù)據(jù)分布方式
1. Uniform:等概論隨機(jī)選擇記錄
2. Zipfian:隨機(jī)選擇記錄,存在熱記錄
3. Latest:近期寫(xiě)入的記錄為熱記錄
測(cè)試場(chǎng)景
YCSB為HBase提供了多種場(chǎng)景下的測(cè)試,本次測(cè)試中,我們導(dǎo)入10億條數(shù)據(jù),并對(duì)如下場(chǎng)景進(jìn)行測(cè)試:

YCSB并沒(méi)有提供Increment相關(guān)的測(cè)試功能,但是部分業(yè)務(wù)有這方面的需求,因此對(duì)YCBS進(jìn)行了改造,加入了Increment模塊。需要注意的是,在測(cè)試Increment性能前需要導(dǎo)入1億條數(shù)字進(jìn)行測(cè)試。寫(xiě)入和查詢(xún)的數(shù)據(jù)模擬目前線(xiàn)上記錄的長(zhǎng)度,具有以下特性:

HBase相關(guān)重要配置
hfile.block.cache.size:0.2
hbase.regionserver.global.memstore.upperLimit:0.45
jvm:-Xms48g -Xmx48g -Xmn4g -Xss256k -XX:PermSize=256m -XX:MaxPermSize=256m
jvm參數(shù)表示每臺(tái)機(jī)器會(huì)分配48G內(nèi)存作為Java的堆內(nèi)存使用,hfile.block.cache.size參數(shù)表示HBase會(huì)為每臺(tái)Region Server分配大小為9.6G(48 * 0.2)的內(nèi)存作為讀緩存使用。hbase.regionserver.global.memstore.upperLimit參數(shù)表示HBase會(huì)為每臺(tái)Region Server最多分配大小為21.6G(48 * 0.45)的內(nèi)存作為寫(xiě)緩存使用。
測(cè)試方法
上述測(cè)試場(chǎng)景中部分測(cè)試(插入測(cè)試、scan掃描查詢(xún)等)對(duì)客戶(hù)端帶寬資源要求很高,單個(gè)客戶(hù)端測(cè)試會(huì)因?yàn)榭蛻?hù)端帶寬耗盡而導(dǎo)致無(wú)法測(cè)出實(shí)際服務(wù)器集群讀寫(xiě)性能,因此我們開(kāi)啟6個(gè)YCBS客戶(hù)端并發(fā)進(jìn)行測(cè)試,最終Throughput是6個(gè)客戶(hù)端的總和,AverageLatency取6個(gè)客戶(hù)端延遲的平均值。
單個(gè)YCSB測(cè)試都遵守標(biāo)準(zhǔn)測(cè)試流程,基本流程如下:
1. 在6個(gè)客戶(hù)端服務(wù)器部署YCSB程序,向集群中l(wèi)oad 10億條數(shù)據(jù)
2. 按照預(yù)先定義的場(chǎng)景修改負(fù)載文件workload
3. 使用ycsb run方法執(zhí)行測(cè)試,向集群寫(xiě)入讀取數(shù)據(jù)
4. 進(jìn)行數(shù)據(jù)操作時(shí)通過(guò)YCSB記錄產(chǎn)生的統(tǒng)計(jì)數(shù)據(jù),主要是吞吐量和平均延遲兩個(gè)指標(biāo)
5. 根據(jù)結(jié)果生成對(duì)應(yīng)的圖標(biāo)
6. 針對(duì)不同場(chǎng)景,重復(fù)上述測(cè)試步驟
測(cè)試結(jié)果
單條記錄插入
測(cè)試參數(shù)
總記錄數(shù)為10億,分為128個(gè)region,均勻分布在4臺(tái)region server上;插入操作執(zhí)行2千萬(wàn)次;插入請(qǐng)求分布遵從zipfian分布;
測(cè)試結(jié)果

資源使用情況
