在 CentOS 上进行 HBase 性能测试
一 测试准备与基线
hbase shell <<'EOF'
disable 'usertable'
drop 'usertable'
n_splits = 30 # 可按 10 * RS 数调整
create 'usertable', 'cf', {
SPLITS => (1..n_splits).map { |i| "user#{1000 + i * (9999 - 1000) / n_splits}" }
}
describe 'usertable'
EOF
二 使用 YCSB 进行基准测试
wget https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-hbase20-binding-0.17.0.tar.gz
sudo tar -xzf ycsb-hbase20-binding-0.17.0.tar.gz -C /opt
export YCSB_HOME="/opt/ycsb-hbase20-binding-0.17.0"
$YCSB_HOME/bin/ycsb load hbase20 \
-cp /etc/hbase/conf/ \
-p columnfamily=cf \
-P $YCSB_HOME/workloads/workloada
nohup $YCSB_HOME/bin/ycsb run hbase20 \
-cp /etc/hbase/conf/ \
-p columnfamily=cf \
-p recordcount=10000000 \
-p operationcount=10000000 \
-P $YCSB_HOME/workloads/workloadb \
-threads 3 -s &> nohup.out &
三 使用 HBase 自带 PE 工具
# 写入吞吐测试(示例:每个客户端 1 亿行,单行 1KB)
hbase pe --rows=100000000 --size=100 --nomapred
# 读取吞吐测试(基于已写入数据)
hbase pe --rows=100000000 --size=100 --nomapred --read
# 可选:启用输出压缩、调整任务超时
hbase pe \
-Dmapreduce.output.fileoutputformat.compress=true \
-Dmapreduce.task.timeout=60000 \
--rows=... --size=... --nomapred [--read]
四 结果分析与常见瓶颈
五 实践建议