本次測試主要評估線上HBase的整體性能,量化當前HBase的性能指標,對各種場景下HBase性能表現進行評估,為業務應用提供參考。
測試環境
測試環境包括測試過程中HBase集群的拓撲結構、以及需要用到的硬件和軟件資源,硬件資源包括:測試機器配置、網絡狀態等等,軟件資源包括操作系統、HBase相關軟件以及測試工具等。
集群拓撲結構
本次測試中,測試環境總共包含4臺SA5212H2物理機作為數據存儲。生成數據的YCSB程序與數據庫并不運行在相同的物理集群。
單臺機器主機硬件配置
軟件版本信息
測試工具
YCSB全稱Yahoo! Cloud Serving Benchmark,是Yahoo公司開發的專門用于NoSQL測試的基準測試工具。github地址:https://github.com/brianfrankcooper/YCSB YCSB支持各種不同的數據分布方式
1. Uniform:等概論隨機選擇記錄
2. Zipfian:隨機選擇記錄,存在熱記錄
3. Latest:近期寫入的記錄為熱記錄
測試場景
YCSB為HBase提供了多種場景下的測試,本次測試中,我們導入10億條數據,并對如下場景進行測試:
YCSB并沒有提供Increment相關的測試功能,但是部分業務有這方面的需求,因此對YCBS進行了改造,加入了Increment模塊。需要注意的是,在測試Increment性能前需要導入1億條數字進行測試。寫入和查詢的數據模擬目前線上記錄的長度,具有以下特性:
HBase相關重要配置
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參數表示每臺機器會分配48G內存作為Java的堆內存使用,hfile.block.cache.size參數表示HBase會為每臺Region Server分配大小為9.6G(48 * 0.2)的內存作為讀緩存使用。hbase.regionserver.global.memstore.upperLimit參數表示HBase會為每臺Region Server最多分配大小為21.6G(48 * 0.45)的內存作為寫緩存使用。
測試方法
上述測試場景中部分測試(插入測試、scan掃描查詢等)對客戶端帶寬資源要求很高,單個客戶端測試會因為客戶端帶寬耗盡而導致無法測出實際服務器集群讀寫性能,因此我們開啟6個YCBS客戶端并發進行測試,最終Throughput是6個客戶端的總和,AverageLatency取6個客戶端延遲的平均值。
單個YCSB測試都遵守標準測試流程,基本流程如下:
1. 在6個客戶端服務器部署YCSB程序,向集群中load 10億條數據
2. 按照預先定義的場景修改負載文件workload
3. 使用ycsb run方法執行測試,向集群寫入讀取數據
4. 進行數據操作時通過YCSB記錄產生的統計數據,主要是吞吐量和平均延遲兩個指標
5. 根據結果生成對應的圖標
6. 針對不同場景,重復上述測試步驟
本文章為作者原創
🈲禁止🈲
其他公眾賬號若有轉載,請標明出處
文章列表