AHBench是由阿里雲Lindorm團隊研發的benchmark測試套件,支援一鍵測試Lindorm和HBase等叢集效能。
介紹
該測試套件整合了YCSB(Yahoo! Cloud Serving Benchmark)工具,YCSB提供了測試集合、測試流程式控制制、結果匯聚等功能。使用該測試套件,您可以通過簡單配置,一鍵執行效能測試。
準備工作
注意事項
-
測試壓力過程中可能會使被測系統負載過高,請勿在生產環境中運行該測試載入器。
-
該測試套件使用"ahbenchtest-read"與"ahbenchtest-write" 兩個表作為測試用表。測試過程中可能會刪除再建立這兩張表。請確保這兩張表可以安全地被刪除。
-
確保有足夠測試叢集的儲存空間。
-
ECS為虛擬運行環境,同一機型下的效能測試結果可能存在5%~10%的波動,處於預期範圍之內。
運行環境
請確保壓測用戶端運行環境滿足:
-
Linux系統
-
JDK 1.8 +
-
Python 2.7
-
建議用戶端CPU配置為獨享16Core以上
配置叢集地址
在AHBench/conf/hbase-site.xml中配置需要測試的Lindorm或HBase叢集地址。
訪問Lindorm可參考基於HBase Java API的應用開發。並在hbase-site.xml中增加配置以下參數。
<property>
<name>hbase.client.connection.impl</name>
<value>org.apache.hadoop.hbase.client.AliHBaseUEClusterConnection</value>
</property>
配置環境變數
在AHBench/conf/ahbench-env.properties路徑下組態工具啟動並執行環境變數。
-
執行以下命令開啟ahbench-env.properties檔案。
vi AHBench/conf/ahbench-env.properties -
配置JDK的安裝地址(例如:
JAVA_HOME=/usr/java/jdk1.8.0/)。如果Java已經在系統PATH中,可以跳過該配置。 -
配置被測HBase叢集的版本,如果為1.x版本則填1,如果為2.x版本則填2。
HBASE_VERSION=2
配置測試相關參數(可選)
在AHBench/conf/ahbench-settings.properties路徑下配置測試相關的參數,如壓縮、編碼、線程數、資料量、欄位大小等,預設不需要修改,如有需求可根據情境進行定製修改。
部分參數僅在特定Lindorm版本支援,如ZSTD壓縮和INDEX編碼僅在雲Lindorm支援,你可以通過配置ZSTD和INDEX獲得更好的效能。
# 配置被測表的壓縮演算法,可選項有:
# NONE LZO ZSTD SNAPPY GZ LZ4 ZSTD 等
# 注意部分被測系統可能不支援指定的壓縮演算法
# 雲Lindorm推薦使用ZSTD
ahbench.table.compression=SNAPPY
# 配置被測表的編碼演算法,可選項有:
# NONE DIFF INDEX
# 注意部分被測系統可能不支援指定的編碼演算法
# 雲Lindorm推薦使用INDEX
ahbench.table.encoding=DIFF
啟動測試
-
快速測試集
測試資料量1000萬,整體已耗用時間大約40分鐘(視被測系統可能有變化),至少需要總儲存空間20 GB。
cd AHBench ./fast_test -
完整測試集
測試資料量20億,整體已耗用時間大約25小時(視被測系統可能有變化),至少需要總儲存空間2 TB。
cd AHBench ./full_test若要重複進行該測試,可以通過跳過資料匯入階段(上一次測試已成功運行),減少已耗用時間。跳過匯入階段,整體測試回合時間大約3.5小時(視被測系統可能有變化)。
cd AHBench ./full_test --skipload
測試結果分析
測試完成後,會在目前的目錄產生CSV檔案。CSV(Comma-Separated Values)檔案全稱為逗點分隔值檔案。可以將測試結果複製到Excel、Numbers等資料分析軟體中做進一步對比分析。
-
查看CSV檔案的名稱。
ls -ltr -
查看指定CSV檔案的內容。
cat full_throughput.csv
CSV檔案內容樣本如下。
hadoop@nake-ahbench-for-c5 ~/AHBench $ ls -ltr
total 52
drwxr-xr-x 14 hadoop hadoop 4096 Sep 5 10:23 workloads/
-rw-r--r-- 1 hadoop hadoop 1421 Sep 5 10:23 README
-rw-r--r-- 1 hadoop hadoop 558 Sep 5 10:23 LICENSE
-rwxr-xr-x 1 hadoop hadoop 741 Sep 5 10:23 full_test*
-rwxr-xr-x 1 hadoop hadoop 963 Sep 5 10:23 fast_test*
drwxr-xr-x 5 hadoop hadoop 4096 Sep 5 10:23 tools/
drwxr-xr-x 2 hadoop hadoop 4096 Sep 5 10:31 conf/
drwxrwxr-x 2 hadoop hadoop 4096 Sep 5 10:37 tmp/
drwxr-xr-x 2 hadoop hadoop 4096 Sep 5 10:43 bin/
drwxr-xr-x 2 hadoop hadoop 4096 Sep 5 10:43 suite/
-rw-rw-r-- 1 hadoop hadoop 437 Sep 6 11:16 full_throughput.csv
-rw-rw-r-- 1 hadoop hadoop 408 Sep 6 11:16 full_spike_latency.csv
drwxrwxr-x 2 hadoop hadoop 4096 Sep 6 11:43 logs/
hadoop@nake-ahbench-for-c5 ~/AHBench $ cat full_throughput.csv
TestName,OperationType,Throughput(rows/s),AverageLatency(us),P95Latency(us),P99Latency(us),P999Latency(us)
full_throughput_single_read,READ,68901.0,2898.706728054881,9255.0,46559.0,108863.0
full_throughput_scan,SCAN,1247157.0,4004.8719123340397,18639.0,47167.0,71103.0
full_throughput_single_write,INSERT,195834.0,1016.75785602,1344.0,3009.0,13295.0
full_throughput_batch_write,BATCH,782735.0,12722.031288233438,20623.0,87743.0,116095.0
hadoop@nake-ahbench-for-c5 ~/AHBench $ cat full_spike_latency.csv
TestName,OperationType,Throughput(rows/s),AverageLatency(us),P95Latency(us),P99Latency(us),P999Latency(us)
full_spike_single_read,READ,4996.0,656.0502980620339,974.0,2335.0,51775.0
full_spike_scan,SCAN,249864.0,1390.0287474438796,2061.0,8035.0,16655.0
full_spike_single_write,INSERT,49971.0,582.7455317893222,664.0,1112.0,5943.0
full_spike_batch_write,BATCH,199871.0,2798.396296975711,2945.0,14951.0,96319.0
常見問題
如果測試中遇到錯誤退出,請檢查如下事項。
-
JAVA_HOME是否正確設定,是否安裝了Python運行環境。
-
被測叢集地址是否填寫正確。
-
被測叢集HBase版本是否填寫正確。
-
被測叢集是否支援測試所指定的壓縮演算法。
-
被測叢集狀態是否正常服務。