HBase入门笔记--读性能优化

一、前言

在生产环境使用HBase过程中,随着数据量的不断增加,查询HBase数据变得越来越慢,对于业务来说是不可用的,需要对读性能进行优化

二、问题定位

从hbase监控指标来看,发现FullGC次数频繁,大家都知道FullGC对系统的影响很大,会使系统资源都耗在GC上,其它性能就会影响,另一个异常是Compact队列一直在阻塞,需要compact的文件过多又不无法及时得到compact,这个就导致小文件越来越多得不到合并影响读性能。

三、问题解决

初步定位到原因之后,考虑从以下几个方面进行优化

1. 增加regionserver堆栈内存大小,此优化主要考虑到FullGC次数过多,尽量避免Full GC的发生

   2.  观察到集群读缓存率过低,很多时候读的数据都不在缓存中,blockcache得不到利用,所以考虑读写cahce比例调整,减小读增大memstore内存,提高写性能,避免写请求被阻塞

3. 调整small compact线程数,原来是设置了1 个small compact,为提高compact速率,线程调整为3

4. 调整表region数,原来是对于所有的表预分配了1000个region,导致一些数据量小的表region数过多,优化后针对表的数据量调整了region的数量

5. 调整region hfile数量 ,  针对region hfile文件数过多的表,进行手动major_compact, 以提高读性能

6. 隔离表, 此步主要考虑到compact队列阻塞严重,所以考虑将一些表用几台新机器进行隔离, 最本质的其实还是降低单region的hfile数量,降低之后在定位到数据在哪个region之后,可以大幅减少扫描hfile的次数,具体方法如下,

a 确认要隔离的表

b 确认隔离的机器列表

c  创建group

add_rsgroups ‘test_tables‘

d 将机器列表move到新建组别
move_rsgroup_servers ‘test_tables‘,[‘1.1.1.1:60020‘,‘1.1.1.2:60020‘,‘1.1.1.3:60020‘]

c 查看上面操作是否成功
 get_rsgrup ‘test_tables‘

d 将需要隔离的表move到group

move_rsgroup_tables ‘test_tables‘,[‘table1‘,‘table2‘]

进行隔离后,发现compact阻塞严重的表已经下降了,最直观的表现是读性能从原来的10几秒优化到200ms以内,读性能得到质的变化,最主要的优化是降低了每个region的hfile数量,提高了定位数据区间的效率

时间: 2024-10-20 04:36:58

HBase入门笔记--读性能优化的相关文章

HBase最佳实践-读性能优化策略

任何系统都会有各种各样的问题,有些是系统本身设计问题,有些却是使用姿势问题.HBase也一样,在真实生产线上大家或多或少都会遇到很多问题,有些是HBase还需要完善的,有些是我们确实对它了解太少.总结起来,大家遇到的主要问题无非是Full GC异常导致宕机问题.RIT问题.写吞吐量太低以及读延迟较大. Full GC问题之前在一些文章里面已经讲过它的来龙去脉,主要的解决方案目前主要有两方面需要注意,一方面需要查看GC日志确认是哪种Full GC,根据Full GC类型对JVM参数进行调优,另一方

Android App性能优化笔记之一:性能优化是什么及为什么?

By Long Luo 周星驰的电影<功夫>里面借火云邪神之口说出了一句至理名言:“天下武功,唯快不破”. 在移动互联网时代,同样如此,留给一个公司的窗口往往只有很短的时间,如何把握住这个时机,迅速开发出产品,成为至关重要的一环.相对传统互联网时代的PC产品,用户对移动端产品的容忍度更低.而一款移动应用在推出的时候可能只是接近完成的状态,这就需要通过快速的迭代开发来更新产品,不断完善产品来留住用户.同时,通过更新产品也能唤醒一些沉默用户,让一些原本下载了应用但使用次数非常少的用户给该应用多一次

从零开始入门 K8s | etcd 性能优化实践

作者 | 陈星宇(宇慕)??阿里云基础技术中台技术专家 本文整理自<CNCF x Alibaba 云原生技术公开课>第 17 讲. 导读:etcd 是容器云平台用于存储关键元信息的组件.阿里巴巴使用 etcd 已经有 3 年的历史, 在今年 双11 过程中它又一次承担了关键角色,接受了 双11 大压力的检验.本文作者从 etcd 性能背景出发,带领我们了解了?etcd server 端性能优化及 etcd client 使用最佳实践,希望能够为大家运行一个稳定而且高效的 etcd 集群提供帮助

HBase设计与开发性能优化

1. 表的设计 1.1 Pre-Creating Regions 默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分.一种可以加快批量写入速度的方法是通过预先创建一些空的regions,这样当数据写入HBase时,会按照region分区情况,在集群内做数据的负载均衡. 有关预分区,详情参见:Table Creation: Pre-Creating Regions,下面是一

HBase学习笔记1-HConnection性能研究

使用Java API与HBase集群交互时,需要构建HTable对象,使用该对象提供的方法来进行插入/删除/查询等操作.要创建HTable对象,首先要创建一个带有HBase集群信息的配置对象Configuration conf,其一般创建方法如下: Configuration conf = HBaseConfiguration.create(); //设置HBase集群的IP和端口 conf.set("hbase.zookeeper.quorum", "10.172.1.61

Android学习笔记之性能优化SparseArray

PS:终于考完试了.来一发.微机原理充满了危机.不过好在数据库89分,还是非常欣慰的. 学习内容: 1.Android中SparseArray的使用..   昨天研究完横向二级菜单,发现其中使用了SparseArray去替换HashMap的使用.于是乎自己查了一些相关资料,自己同时对性能进行了一些测试.首先先说一下SparseArray的原理.   SparseArray(稀疏数组).他是Android内部特有的api,标准的jdk是没有这个类的.在Android内部用来替代HashMap<In

Hbase入门笔记----架构以及应用介绍

Hbase全称为Hadoop Database,即Hbase是Hadoop的数据库,是一个分布式的存储系统.Hbase利用Hadoop的HDFS作为其文件存储系统,利用Hadoop的MapReduce来处理Hbase中的海量数据.利用zookeeper作为其协调工具. 本篇文章将重点介绍Hbase三个方面的内容:Hbase体系结构(架构)的介绍.Hbase shell的操作.Hbase的Java api的客户端操作. (一)Hbase的架构介绍 Hbase的体系结构是一个主从式的结构,主节点Hm

Hibernate学习笔记_性能优化

注意session.clear()的运用,尤其在不断分页循环的时候 a)    在一个大集合中进行遍历,遍历msg,取出其中的含有敏感字样的对象 b)    另外一种形式的内存泄露  (  //面试题:Java有内存泄漏吗?语法级别没有 但是可由java引起,例如:连接池不关闭,或io读取后不关闭) 1+N问题 (典型的面试题)                                              a)    @ManyToOne(fetch=FetchType.LAZY)

ELASTICSEARCH 读写性能优化

ELASTIC 写i性能优化 refresh translog flush refresh 优化 translog优化 flush 优化 读性能优化 shard 设置 原文地址:https://www.cnblogs.com/yg_zhang/p/12099575.html