AHBench is a benchmark testing suite developed by the Alibaba Cloud Lindorm team. It integrates the Yahoo! Cloud Serving Benchmark (YCSB) for one-click performance testing of Lindorm and HBase clusters.
A complete benchmark run involves six steps:
Meet prerequisites (network connectivity, whitelist, runtime environment)
Download and extract AHBench
Configure the cluster endpoint
Configure environment variables
(Optional) Adjust test parameters
Run a test set and analyze results
Prerequisites
Before you begin, make sure you have:
A Lindorm or HBase cluster to test against
An Elastic Compute Service (ECS) instance in the same region and using the same network type as the cluster, to run the stress testing client
Use a Virtual Private Cloud (VPC) for better network security. If both instances use VPC, they must share the same VPC ID. Place the ECS instance in the same zone as the cluster to reduce network latency.
The ECS instance IP address added to the Lindorm instance whitelist. See Configure a whitelist.
Linux operating system, JDK 1.8 or later, and Python 2.7 installed on the ECS instance
At least 16 dedicated CPU cores on the ECS instance
Do not run AHBench against a production environment. Stress testing can overload the cluster under test.
Download AHBench
Download AHBench v1.0.5, upload it to the ECS instance, and extract the archive.
Configure the cluster endpoint
Add the cluster endpoint to AHBench/conf/hbase-site.xml. For instructions on finding the Lindorm connection address, see Develop applications using the HBase Java API.
Also add the following property to hbase-site.xml:
<property>
<name>hbase.client.connection.impl</name>
<value>org.apache.hadoop.hbase.client.AliHBaseUEClusterConnection</value>
</property>Configure environment variables
Open the environment configuration file:
vi AHBench/conf/ahbench-env.propertiesSet
JAVA_HOMEto the JDK installation path. Skip this step if Java is already on the system PATH.JAVA_HOME=/usr/java/jdk1.8.0/Set
HBASE_VERSIONto match the HBase version of the cluster under test:1for version 1.x,2for version 2.x.HBASE_VERSION=2
Adjust test parameters (optional)
Edit AHBench/conf/ahbench-settings.properties to customize compression, encoding, thread count, data volume, and field size. The defaults work for most cases.
| Parameter | Default | Options | Notes |
|---|---|---|---|
ahbench.table.compression | SNAPPY | NONE, LZO, ZSTD, SNAPPY, GZ, LZ4 | Use ZSTD for Lindorm — it delivers better compression ratios. Not all systems support every option. |
ahbench.table.encoding | DIFF | NONE, DIFF, INDEX | Use INDEX for Lindorm. INDEX encoding is not supported by all systems. |
The configuration file contains inline comments for all other parameters.
AHBench uses ahbenchtest-read and ahbenchtest-write as the test table names. These tables are deleted and recreated during each test run. Make sure those table names are safe to delete in your cluster.
Run a test
Each test has two internal phases: a load phase that writes test data into the cluster, and a run phase that executes read/write operations against that data. The --skipload flag skips the load phase — only use it when the previous test completed successfully.
Quick test
Tests with 10 million rows. Requires at least 20 GB of free storage. Total runtime is approximately 40 minutes.
cd AHBench
./fast_testFull test
Tests with 2 billion rows. Requires at least 2 TB of free storage. Total runtime is approximately 25 hours.
cd AHBench
./full_testTo repeat the full test without re-importing data, use --skipload. This reduces runtime to approximately 3.5 hours.
cd AHBench
./full_test --skiploadECS is a virtualized environment. Performance results for the same instance type may vary by 5–10% between runs. This is expected.
Analyze test results
After the test completes, AHBench writes results to a Comma-Separated Values (CSV) file in the current directory.
Find the CSV file:
ls -ltrView the results:
cat full_throughput.csv
Open the CSV in Excel or Numbers for side-by-side comparison across multiple test runs.

Troubleshooting
If the test exits with an error, check the following:
JAVA_HOMEis correctly set and Python 2.7 is installed.The cluster endpoint in
hbase-site.xmlis correct.HBASE_VERSIONmatches the actual HBase version of the cluster.The cluster supports the compression algorithm specified in
ahbench-settings.properties.The cluster is running and reachable from the ECS instance.