![0cbc8f3df9f56298468633f25a79b497.png](https://i-blog.csdnimg.cn/blog_migrate/e0cf9432b2654f1c22bf1426f00dd0bb.png)
HBase是Hadoop生态系统中的一个组件,是一个分布式、面向列存储的内存型开源数据库,可以支持数百万列(MySQL4张表在HBase中对应1个表,4个列)、超过10亿行的数据存储。可用作:
冷热数据分离
![df38f93f98d925da9d8e3cb13551b402.png](https://i-blog.csdnimg.cn/blog_migrate/cf8de783926debacd96a69c58b451639.png)
-
HBase适合作为冷数据存储,存储和查询海量历史数据
-
MySQL适合作为热存储存储,支持数据读写、事务操作
-
归档近期未更新的历史数据,新增数据至HBase,再删除MySQL记录
海量流水记录
![671da78324bfcfaf9aa97a5adcac08bc.png](https://i-blog.csdnimg.cn/blog_migrate/c9f08ed881dd501802f2db7dbe6f7199.png)
-
流水记录可随时新增字段
-
适合存储海量流水记录
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垃圾回收进行优化。