什么是数据热点?
有了分区就会有数据热点问题。分区之后大量数据写入到某些集中的region中,导致这些region所在的regionServer节点承接了大量的任务,而有的节点则没有数据很闲,这就造成了数据热点。
如何解决数据热点问题?
1.加盐处理,在rowKey前面加随机数,可以使数据分布更加的均匀
例子:insert into test select concat(rand(),'zk') from test1
2.hash处理,计算rowKey的hash值,可以让数据离散,可以让关联性较强的数据放在一起,有利于后期的业务查询。
例子:insert into test select hash('zk') from test1
3.反转字符(reverse),可以反转手机号码或者身份证号码等等,基本可以保证数据的均匀分布,但是会把关联性较强的数据全部打散分在不同的region,不利于后期业务的查询,不推荐使用。
rowkey的设计原则
rowKey的设计主要是让数据均匀的分布在每个region上面,一定程度上防止数据的热点
三大原则:
唯一原则
排序原则
散列原则