天天看点

Hbase库亿级大数据性能测试测试环境配置信息测试数据模型一、新增数据性能二、查询数据性能三、修改数据性能四、删除数据性能五、数据导入性能六、count统计性能七、总结

测试环境配置信息

Ambari+HDP大数据平台,5个节点服务器

CPU配置:16核 Intel 2.20GHz

操作系统:CentOS7.7/Linux x86_64

HDFS空间:4TB

HDFS文件备份数:3节点

Hbase MASTER和REGIONSERVERS各一个

测试数据模型

模拟某酒店顾客信息表1个列族,33列字段,目标数据量1亿+

一、新增数据性能

单条数据插入,平均不到250条/秒,每1000条需要4秒多,平均每条耗时4毫秒

本地往服务器批量插入数据,平均在1000条/秒左右

服务器上测试批量插入数据,基数2004万条,新增100万耗时693秒,平均1443条/秒

基数2004万条,新增1000万耗时6887秒,平均1452条/秒

基数2004万条,新增8000万耗时15:21:24,合55284秒,平均1447条/秒

结论:

随着入库数据量的增长插入数据性能没有受影响,一直比较稳定。

二、查询数据性能

1亿+数据量的表

1、Java客户端查询

连续根据rowKey查4条记录,分别耗时5575毫秒、39毫秒、6毫秒、4毫秒,初次查询较慢,需要几秒时间,之后查询很快,都是毫秒级响应。

2、HBase shell查询

连续根据rowKey查3条记录,分别耗时137毫秒、29毫秒、31毫秒

连续根据rowKey查同一条记录,分别耗时31毫秒、27毫秒、17毫秒

3、scan性能

HBase shell根据rowKey范围scan扫描10条记录,耗时159毫秒

4、行键过滤性能

根据rowKey前缀进行过滤查询,1亿+数据中过滤出1条记录耗时1170秒,

一直等待很长时间,效率很差,可能全表扫描了,不建议使用

三、修改数据性能

连续根据rowKey修改3条记录,分别耗时31毫秒、5毫秒、7毫秒

四、删除数据性能

连续根据rowKey删除3条记录,分别耗时54毫秒、3毫秒、22毫秒

五、数据导入性能

1、Kettle导入

Kettle 从csv读取数据导入HBASE库,平均1800条/秒左右

2、ImportTsv命令导入

HBASE ImportTsv命令从Hdfs上的csv目录导入数据2004万条,耗时2小时22分32秒,合8552秒,平均2343条/秒

六、count统计性能

1、HBase shell count命令统计

200万数据统计count数,耗时 61秒

2004.1009万数据统计count数,耗时664秒

2、执行 hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'hotel_guest’命令统计

2004.1009万数据count数,耗时284秒

3、执行 hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'hotel_guest’命令统计

1亿+数据count数,耗时21分25秒,合1285秒

七、总结

Hbase库新增数据,以及根据RowKey修改、查询、删除数据性能较好,都是毫秒级响应,与MySQL小表操作基本相当,且性能不会像MySQL那样随着存入数据量增长而下降。

Hbase行键过滤性能较差,大数据量环境下不建议使用。

Hbase库数据批量导入性能与其他数据库相比没有优势,应该算比较低的。

继续阅读