Hbase热点现象

浩客2年前技术文章887

热点现象

HBase热点现象是指在分布式存储系统HBase中,由于数据访问不均衡而导致部分Region Server负载过重的情况。这种不均衡通常是由于某些特定的数据行或列族频繁地被访问,从而导致某个或某些Region Server成为整个系统的瓶颈。

常见的热点现象包括“写热点”和“读热点”。写热点指的是某些特定的数据行或列族被持续高频率地写入,导致某个Region Server负责处理大量的写请求,而其他Region Server负载较轻。这会造成该Region Server的负载过重,容易引发延迟增加、写入速度下降等问题。读热点则是某些特定的数据行或列族被频繁地读取,导致某个Region Server成为大部分读请求的瓶颈,影响整个系统的读取性能。


热点现象出现的原因

1、数据倾斜:某些特定的数据行或列族被频繁地访问或写入,可能是由于业务需求、数据特性等因素导致。这会导致部分Region Server承载了大部分的读写负载,造成不均衡。

2、rowkey设计不合理。

3、热点发生在大量的client直接访问集群的一个或极少数个节点(访问可能是读,写或者其他操作)。大量访问会使热点region所在的单个机器超出自身承受能力,引起性能下降甚至region不可用,这也会影响同一个RegionServer上的其他region,由于主机无法服务其他region的请求。


热点现象解决办法

为了防止热点问题,对rowkey进行合理设计使得不同行在同一个region,但是在更多数据情况下,数据应该被写入集群的多个region。

1、加盐:在HBase中,可以使用加盐来增加数据的分布均匀性和查询性能。加盐的基本思想是在数据的行键(Rowkey)中添加随机生成的字符串或数字作为前缀,使得相似的行键被分散到不同的Region中存储。在rowkey的前面增加随机数,使得它和之前的rowkey的开头不同。分配的前缀种类数量应该和你想使用数据分散到不同的region的数量一致。

2、哈希:哈希可以使负载分散到整个集群,但是读却是可以预测的。使用确定的哈希可以让客户端重构完整的rowkey,可以使用get操作准确获取某一个行数据

3、反转:反转固定长度或者数字格式的rowkey。这样可以使得rowkey中经常改变的部分(最没有意义的部分)放在前面。这样可以有效的随机rowkey,但是牺牲了rowkey的有序性。

4、时间戳反转:一个常见的数据处理问题是快速获取数据的最近版本,使用反转的时间戳作为rowkey的一部分对这个问题十分有用,可以用 Long.Max_Value - timestamp 追加到key的末尾,例如[key][reverse_timestamp],[key]的最新值可以通过scan [key]获得[key]的第一条记录,因为HBase中rowkey是有序的,第一条记录是最后录入的数据。

5、HBase建表预分区:合理设计HBase数据表的预分区,通过制定好的分区策略将数据均匀地分布在不同的Region中。这样可以避免部分Region Server承载过多的负载,减轻热点现象的影响


相关文章

查看相关服务器信息命令

查看相关服务器信息命令

1、查看服务器架构方式arch2、查看服务器cpu核数nproc3、查看服务器内存大小free -hdmidecode -t 17 | grep Size4、查看某目录下挂载磁盘大小lsblk5、查看...

Phoenix 安装使用文档

Phoenix 安装使用文档

Phoenix 安装使用文档下载Phoenix直接到Phoenix官网下载安装包,官网地址为:http://mirror.bit.edu.cn/apache/phoenix/备注:Phoenix 版本...

Hive合并小文件:hive归档(archive)

Hive合并小文件:hive归档(archive)

一、概述       在HDFS中数据和元数据分别由DataNode和NameNode负责,这些元数据每个对象一般占用大约150个字节。大量的小文件相对于大文件会占用大量的NameNode内存。对Na...

开源大数据集群部署(十八)Hive 安装部署

开源大数据集群部署(十八)Hive 安装部署

2.7.1创建hive Kerberos主体bash /root/bigdata/getkeytabs.sh /etc/security/keytab/hive.keytab hive2.7.2 安装...

linux开启Firewall白名单限制ip访问

linux开启Firewall白名单限制ip访问

1、Firewalld是否启动成功systemctl start firewalld && systemctl enable firewalld 1 2、开启规则需求:客户由...

trino容器设置污点(六)

trino容器设置污点(六)

前提:本文前提已经部署了trino容器和k8s集群。容器设置污点1、在k8s节点中设置污点kubectl taint nodes  dm04.dtstack.com dps=1:NoSchedule2...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。