在CentOS上测试HBase前,需确保已完成**安装(Java、Hadoop、HBase)、配置(hbase-site.xml、hbase-env.sh)、启动(HMaster、HRegionServer)**步骤。可通过以下命令快速验证:
jps,若输出包含HMaster、HRegionServer,则说明HBase集群已启动。http://<master-ip>:16010,查看HBase管理界面(需确保端口开放)。hbase shell,若能正常进入交互式命令行,则说明客户端连接成功。通过HBase Shell执行**DDL(表操作)、DML(数据操作)**命令,测试HBase的基本功能是否正常:
status,输出应显示“0 active master, X servers”(X为RegionServer数量),无报错信息。version,输出应包含HBase版本号(如2.4.9)及Hadoop版本号。create 'student', 'info',创建名为student的表,包含info列族。put 'student', '1001', 'info:name', 'Tom'、put 'student', '1001', 'info:age', '20',向student表插入一行数据(Rowkey为1001)。scan 'student',应返回插入的行数据。get 'student', '1001',应返回1001行的info:name和info:age字段值。count 'student',应返回1(表示表中有1行数据)。deleteall 'student', '1001'。disable 'student' → truncate 'student'。drop 'student',删除student表。YCSB(Yahoo Cloud Serving Benchmark)是HBase性能测试的常用工具,可模拟读、写、混合等场景,评估集群吞吐量、延迟等指标。
wget https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-0.17.0.tar.gz。tar -zxvf ycsb-0.17.0.tar.gz,进入ycsb-0.17.0目录。mvn -pl site.ycsb:hbase20-binding -am clean package(生成HBase 2.x绑定包)。disable 'usertable';
drop 'usertable';
create 'usertable', 'cf', {SPLITS => ['1', '2', '3', '4', '5']}; -- 分区数根据RegionServer数量调整
./bin/ycsb load hbase20 -P workloads/workloada -p columnfamily=cf -p recordcount=1000000 -p threadcount=4,向usertable加载100万条数据(workloada为写密集型场景,包含95%插入、5%读取)。./bin/ycsb run hbase20 -P workloads/workloadb -p columnfamily=cf -p recordcount=1000000 -p operationcount=1000000 -p threadcount=8 -s,执行混合读写场景(workloadb包含70%读取、30%插入),-s参数表示输出详细统计信息。nohup.out或终端输出会显示**吞吐量(Throughput,ops/sec)、延迟(Latency,avg/p99/max)、错误率(Error Rate)**等指标。例如:[READ], Operations, 500000
[READ], AverageLatency(us), 1200
[READ], MaxLatency(us), 50000
[WRITE], Operations, 500000
[WRITE], AverageLatency(us), 2000
通过这些指标可评估HBase集群的性能瓶颈(如延迟高可能是磁盘IO不足,吞吐量低可能是网络带宽限制)。稳定性测试需模拟节点故障,验证HBase的自动故障转移和数据冗余能力:
jps输出中的HRegionServer),执行kill -9 <PID>终止进程。
hbase shell中执行list_regionservers,应显示故障节点已移除,且数据已自动迁移到其他RegionServer。scan 'usertable',应能正常查询数据(无丢失)。jps中的HMaster),观察是否有备用Master自动接管(Web UI会显示新的HMaster地址)。
hbase shell中执行status,应显示集群正常运行。get 'student', '1001',应能获取到插入的数据(验证HDFS的副本机制生效)。hbase-site.xml中的hbase.zookeeper.quorum配置(需指向正确的ZooKeeper地址),并确保防火墙开放了HBase相关端口(如16010、16000)。/opt/hbase/logs/hbase-<user>-regionserver-<hostname>.log),常见原因包括HDFS不可用、ZooKeeper连接失败。hbase-env.sh中的HBASE_HEAPSIZE)、Compaction队列(若过长,需优化Compaction策略)。