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增强版
  • username:访问HBase增强版集群的数据库用户,请先对该账号进行授权。
  • password:访问HBase增强版的数据库密码,请先对该账号进行授权。
Lindorm
  • username:访问Lindorm集群的数据库用户,请先对该账号进行授权。
  • password:访问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 顺序运行的测试用例,可以根据需要选择要运行的用例。
  • none:不运行该测试用例。
  • singleread:随机只读。
  • uniformsinglewrite:单行写。
  • uniformscan:范围读,uniform。
  • batchwrite: 批量写,uniform。
  • workload-a:随机读+随机写混合,50:50,zipfan。
  • workload-b:随机读+随机写混合,95:5,zipfan。
  • workload-c:只读,zipfan。
  • workload-d:随机读+随机写混合,95:5,latest。
  • workload-e:范围读+随机写混合,95:5,zipfian。
  • workload-f:随机读+读后修改混合,50:50,zipfian。
说明
  • 部分参数仅在特定HBase版本支持,例如ZSTD压缩算法和INDEX编码算法仅在HBase增强版和Lindorm中支持,您可以通过配置ZSTD和INDEX获得更好的性能。
  • 若要重复进行该测试,您可以通过取消re_create_tablepre_load来跳过重新建表和数据导入阶段(上一次测试已成功运行)。跳过导入阶段,整体测试运行时间大约3.5小时(视被测集群规格可能有变化)。

启动测试

单击开始构建按钮,如下图所示,提交测试任务到执行队列中。

qidongceshi

测试结果分析

测试用例运行完毕后,会生成CSV文件,如下图所示,您可以通过浏览器进行查看和下载。

ceshijieguo

CSV(Comma-Separated Values)文件全称为逗号分隔值文件。您可以将数据结果复制到Excel/Numbers等数据分析软件中做进一步对比分析。CSV文件结果如图所示。

wenjianjieguo

常见问题

如果测试中遇到错误退出,请检查如下事项:

  • JAVA和Python是否安装,版本是否正确。
  • 被测集群地址以及专用配置是否填写正确。
  • 被测集群是否支持测试所指定的压缩算法。
  • 被测集群状态是否正常服务。