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版本是否填写正确。
-
被测集群是否支持测试所指定的压缩算法。
-
被测集群状态是否正常服务。