作者:风流小姑-娘 | 来源:互联网 | 2023-07-12 18:03
1什么是Rowkey Hbase中一条数据的唯一标识就是Rowkey,类似于关系型数据库中的主键,HBase中的数据是根据Rowkey的字典顺序来排序的。 那么这条数据存
1什么是Rowkey
Hbase中一条数据的唯一标识就是Rowkey,类似于关系型数据库中的主键,HBase中的数据是根据Rowkey的字典顺序来排序的。
那么这条数据存储于哪个分区,取决于Rowkey处于哪一个预分区的区间内,设计Rowkey的主要目的 ,就是让数据均匀的分布于所有的Region中,在一定程度上防止数据倾斜。尽量在访问的时候不会出现热点现象
2什么是热点
因为HBase中的行是按照Rowkey的字典顺序排序的,这种设计使得Scan操作更为方便,但是也容易出现热点问题。
热点问题是大量的客户端只访问集群的一个或少数节点,大量访问请求会使该台机器的负载很高,直接导致性能下降,甚至Region不可用,而集群的其他节点却处于相对空闲的状态。
3Rowkey设计原则
1长度
Rowkey可以使任意字符串,最大长度64kb,建议越短越好,最好不要超过16个字节,原因如下:
2唯一
Rowkey必须保证是唯一的,如果不唯一的话,同一版本同一个Rowkey插入Hbase中会更新之前的数据,与需求不符
3散列
1.加盐
在Rowkey的前面增加随机数,散列之后的Rowkey就会根据随机生成的前缀分散到各个Region上,可以有效的避免热点问题。
加盐这种方式增加了写的吞吐,但是使得读数据更加困难
2.Hash
Hash算法包含了MD5等算法,可以直接取Rowkey的MD5值作为Rowkey,或者取MD5值拼接原始Rowkey,组成新的rowkey,由于Rowkey设计不应该太长,所以可以对MD5值进行截取拼接
3.字符串反转
2020大数据面试题真题总结(附答案)
数据建模知多少?
如何写好一篇数据部门规范文档
如何优化整个数仓的执行时长(比如7点所有任务跑完,如何优化到5点)
从0-1建设数仓遇到什么问题?怎么解决的?
多值维度及交叉维度最佳解决方案
深入探究order by,sort by,distribute by,cluster by
Hive调优,数据工程师成神之路
数据质量那点事
简述元数据管理
你真的了解全量表,增量表及拉链表吗?
缓慢变化维(SCD)常见解决方案
全方位解读星型模型,雪花模型及星座模型
Sqoop or Datax
left join(on&where)
ID-Mapping
你们公司还在用SparkOnYan吗?
大厂高频面试题-连续登录问题
朋友面试数据研发岗遇到的面试题
数据仓库分层架构
简单聊一聊大数据学习之路
朋友面试数据专家岗遇到的面试题
HADOOP快速入门
数仓工程师的利器-HIVE详解