AHBench-jenkins是由阿里云HBase团队研发的benchmark测试套件。本文介绍AHBench-jenkins测试套件的使用和注意事项。
介绍
该测试套件集成了YCSB(Yahoo! Cloud Serving Benchmark)工具,YCSB提供了测试集合、测试流程控制、结果汇聚等功能。借助该测试套件,您可以通过简单配置,一键执行性能测试。
准备工作
- 在压测客户端准备ECS,具体操作,请参见访问准备。
- 下载AHBench-jenkins,上传到压测客户端并解压。
注意事项
- 测试压力可能将被测集群负载过高,请勿在生产环境中运行该测试套件。
- 该测试套件同一时间只能运行一个测试集,测试集内部测试任务串行执行。请确保没有并行执行不同测试集的测试任务。
- 该测试套件使用"ahbenchtest-read"与"ahbenchtest-write" 两个表作为测试用表。测试过程中可能会删除再创建这两张表。请确保这两张表可以安全地被删除。
- 确保测试集群有足够的存储空间。
- ECS为虚拟运行环境,同一机型下的性能测试结果可能存在5%~10%的波动,处于预期范围之内。
运行环境
请确保压测客户端运行环境满足:
- Liune系统
- JDK 1.8 +
- python 2.7
- 建议客户端CPU配置为独享16Core以上
启动服务
启动AHBench-jenkins服务后,您可以通过在浏览器中输入目标地址(例如:HTTP://IP:PORT) 来访问服务。
# 通过如下命令可以设置该套件的端口,默认为80
cd AHBench-jenkins
./start.sh 8080
选择测试集模板
测试集模板包括快速测试集(FastTest)和完整测试集(FullTest)。
- 快速测试集:测试数据量1000万,整体运行时间大约2小时(视被测集群规格可能有变化),至少需要总存储空间20 GB。
- 完整测试集:测试数据量20亿,整体运行时间大约25小时(视被测集群规格可能有变化),至少需要总存储空间2 TB。
配置测试任务
选择测试模板后,您可以单击左侧菜单栏Build with Parameters来配置测试任务。
配置集群地址
您可以通过cluster_addr参数配置集群地址。配置方式和路径如下表所示。
| 配置方式 | cluster_addr参数说明 | 获取路径 |
| HBase标准版 | HBase标准版集群的ZK链接地址。 | (注意区分专有网络和外网地址)。 |
| HBase增强版 | HBase增强版集群的Java API访问地址。 | |
| Lindorm | Lindorm集群宽表引擎的HBase Java API访问地址。 | (注意区分专有网络和外网地址)。 |
专有配置说明(可选)
不同配置方式中的参数说明如下表所示。
| 配置方式 | 参数说明 |
| HBase标准版 | cluster_version:HBase标准版集群版本。 如果为1.x版本则填1。如果为2.x版本则填2。默认值为2。 |
| HBase增强版 |
|
| Lindorm |
|
通有配置说明(可选)
以下配置测试相关的参数,如压缩、编码、线程数、数据量、字段大小、测试用例等。默认不需要修改,如有需求可根据场景进行定制修改。
| 参数名称 | 参数说明 |
| test_name | 测试名称,只用作显示。 |
| table_name | 测试用表名称,用于测试过程中读写数据。 |
| row_len | 每行数据的主键长度。 |
| col_num | 每行数据中列的个数。 |
| col_len | 每个列的长度。 |
| re_create_table | 表示是否要重建新表。 |
| compression | 表的压缩算法。支持的压缩算法包括NONE、LZO、SNAPPY、GZ、LZ4和ZSTD。 说明 ZSTD仅在HBase增强版和Lindorm中支持。 |
| encoding | 表的编码算法。支持的编码算法包括NONE、DIFF和INDEX。 说明 INDEX仅在HBase增强版和Lindorm中支持。 |
| regions | 预分区数目。 |
| pre_load | 是否要预加载数据,只有预加载写入的数据才能进行读相关的测试。 |
| load_params | 预加载的相关参数,并发线程、限速(每秒目标操作数)和加载行数。 |
| load_wait | 预加载后的等待时间。 |
| warm_up | 是否在测试前进行预热读。 |
| warm_up_params | 预热的相关参数,并发线程、运行时间(秒)和读取范围。 |
| threads | 并发测试线程数。 |
| exec_time | 每个测试用例的运行时间。 |
| recordcount | 用以读测试的Key范围集。 |
| batch_rows | 批量读写的行数。 |
| scan_rows | 单次scan的行数。 |
| interval_time | 测试用例的间隔等待时间。 |
| case1-case10 | 顺序运行的测试用例,可以根据需要选择要运行的用例。
|
说明
- 部分参数仅在特定HBase版本支持,例如ZSTD压缩算法和INDEX编码算法仅在HBase增强版和Lindorm中支持,您可以通过配置ZSTD和INDEX获得更好的性能。
- 若要重复进行该测试,您可以通过取消re_create_table和pre_load来跳过重新建表和数据导入阶段(上一次测试已成功运行)。跳过导入阶段,整体测试运行时间大约3.5小时(视被测集群规格可能有变化)。
启动测试
单击开始构建按钮,提交测试任务到执行队列中。
构建参数包括:recordcount(读测试的key范围集,示例值10000000)、batch_rows(批量读写的行数,示例值 100)、scan_rows(单次Scan的行数,示例值 100)、interval_time(case之间的间隔等待时间,单位为秒,示例值 600)。case1 到 case10 下拉框用于选择测试用例,可选项包括 singleread(随机只读 uniform)、singlewrite(随机只写 uniform)、scan、batchwrite、workload-a(随机读+随机写混合 50:50 zipfan)、workload-b 至 workload-f 等 YCSB 标准负载模式。配置完成后单击 开始构建 按钮提交测试任务。
测试结果分析
测试用例运行完毕后,会生成CSV文件,您可以通过浏览器进行查看和下载。
生成的 CSV 文件包括batchwrite.csv、scan.csv、singleread.csv、singlewrite.csv、total_result.csv 以及 workloada.csv 至 workloadf.csv 等工作负载结果文件,在 Jenkins 构建详情页的构建产生文件区域单击 view 即可查看对应文件内容。
CSV(Comma-Separated Values)文件全称为逗号分隔值文件。您可以将数据结果复制到Excel/Numbers等数据分析软件中做进一步对比分析。CSV文件结果如下所示。
TestName,OperationType,Throughput(rows/s),AverageLatency(us),P95Latency(us),P99Latency(us),P999Latency(us)
batchwrite,BATCH,101437.0,125750.6753771419,210431.0,254463.0,314111.0
scan,SCAN,1655724.0,7704.259769699419,21295.0,58655.0,85887.0
singleread,READ,75501.0,1689.6162362271912,2044.0,2669.0,22415.0
singlewrite,INSERT,42512.0,3001.4856138550078,4483.0,9263.0,50271.0
workloada,READ,26010.0,1996.9924856520854,2789.0,4135.0,27535.0
workloada,UPDATE,26011.0,2907.7582520171654,3963.0,5891.0,31071.0
workloadb,READ,59728.0,1989.3114753677578,2771.0,3699.0,19631.0
workloadb,UPDATE,3150.0,2770.810318072335,4025.0,5311.0,22783.0
workloadc,READ,67388.0,1892.5555709970954,2555.0,3433.0,17103.0
workloadd,READ,61513.0,1926.9758923129186,2717.0,3705.0,15391.0
workloadd,INSERT,3237.0,2781.8499603085943,4055.0,5623.0,18815.0
workloade,INSERT,188.0,4851.740461394097,13071.0,48319.0,109183.0
workloade,SCAN,349277.0,26626.44060447983,68415.0,417535.0,463615.0
workloadf,READ,28806.0,2688.784531208804,4383.0,10071.0,55967.0
workloadf,UPDATE,14402.0,3481.2656232319496,5551.0,8895.0,55455.0
workloadf,READ-MODIFY-WRITE,14402.0,6398.633906954003,9551.0,24639.0,66623.0
常见问题
如果测试中遇到错误退出,请检查如下事项:
- JAVA和Python是否安装,版本是否正确。
- 被测集群地址以及专用配置是否填写正确。
- 被测集群是否支持测试所指定的压缩算法。
- 被测集群状态是否正常服务。
该文章对您有帮助吗?