HBase是Hadoop生态系统中的一个组件,是一个分布式、面向列存储的内存型开源数据库,可以支持数百万列(MySQL4张表在HBase中对应1个表,4个列)、超过10亿行的数据存储。可用作:
冷热数据分离
HBase适合作为冷数据存储,存储和查询海量历史数据
MySQL适合作为热存储存储,支持数据读写、事务操作
归档近期未更新的历史数据,新增数据至HBase,再删除MySQL记录
海量流水记录
流水记录可随时新增字段
适合存储海量流水记录
1、HBase内存调优
HBase硬件层面的调优主要包含内存和CPU。
(1)内存调优
HBase操作过程中需要大量的内存开销,table是可以缓存在内存中的,一般会分配整个可用内存的70%给HBase的Java 堆。但是不建议分配非常大的堆内存,因为GC垃圾回收过程持续太久会导致HBase Region Server处于长期不可用的状态,一般16-48G即可。
(2)HBase CPU调优
HBase 在应用上的各种操作对CPU的消耗也比较大,如频繁使用过滤器对数据进行匹配查询、搜索查询和过滤,多条件组合扫描查询,压缩操作频繁等。如果CPU配置过低,会导致HBase集群负载比较高,造成线程阻塞,所以CPU核数越多越好。
2、HBase JVM性能调优
HMaster不会处理过重的负载,并且实际数据不经过HMaster,所以垃圾回收时HMaster通常不会产生问题。
在HBase Region Server写入数据时,数据会先保存在memstore中,当写入的的数据大于memstore阈值时,数据会写入磁盘。因为写入的数据是由客户端在不同事件写入,故占据的Java堆空间很可能时不连续的,会出现孔洞,所以需要对Region Server的JVM垃圾回收进行优化。