主页 > 新闻资讯 > 大数据开发-rowkey设计概述

大数据开发-rowkey设计概述

作者:游老师 浏览次数: 2021-05-11 17:12
5.1假期结束了,虽然大家很想继续过几天五一,但是还是得投入到工作中来。今天我们来继续学习大数据开发中的HBase的rowkey设计概述。Rowkey的概念和mysql中的主键是完全一样的,Hbase使用Rowkey来唯一的区分某一行的数据。下面就仔细来了解下
一、引言
HBase由于其存储和读写的高性能,在OLAP即时分析中越来越发挥重要的作用,在易观精细化运营产品--易观方舟也有广泛的应用。作为Nosql数据库的一员,HBase查询只能通过其Rowkey来查询(Rowkey用来表示唯一一行记录),Rowkey设计的优劣直接影响读写性能。HBase中的数据是按照Rowkey的ASCII字典顺序进行全局排序的,有伙伴可能对ASCII字典序印象不够深刻,下面举例说明:
假如有5个Rowkey:"012", "0", "123", "234", "3",按ASCII字典排序后的结果为:"0", "012", "123", "234", "3"。
Rowkey 排序时会先比对两个 Rowkey 的第一个字节,如果相同,然后会比对第二个字节,依次类推... 对比到第X个字节时,已经超出了其中一个 Rowkey 的长度,短的 Rowkey 排在前面。由于HBase是通过Rowkey查询的,一般Rowkey上都会存一些比较关键的检索信息,我们需要提前想好数据具体需要如何查询,根据查询方式进行数据存储格式的设计,要避免做全表扫描,因为效率特别低。

二、rowKey设计原则
Rowkey的设计原则主要有三个,分别是rowkey 长度原则、rowkey 散列原则、rowkey 唯一原则。下面就分别对这三个原则进行讲解。
(1)rowkey 长度原则
rowkey是一个二进制码流,可以为任意字符串,最大长度为64kb,实际应用中一般为10-100bytes,它以byte[]形式保存,一般设定成定长。一般越短越好,不要超过16个字节,注意原因如下:
1、目前操作系统都是64位系统,内存8字节对齐,控制在16字节,8字节的整数倍利用了操作系统的最佳特性。
2、hbase将部分数据加载到内存当中,如果rowkey过长,内存的有效利用率就会下降。
 
(2)rowkey 散列原则
如果rowkey按照时间戳的方式递增,不要将时间放在二进制码的前面,建议将rowkey的高位字节采用散列字段处理,由程序随即生成。低位放时间字段,这样将提高数据均衡分布,各个regionServer负载均衡的几率。
如果不进行散列处理,首字段直接使用时间信息,所有该时段的数据都将集中到一个regionServer当中,这样当检索数据时,负载会集中到个别regionServer上,造成热点问题,会降低查询效率。
(3)rowkey 唯一原则
必须在设计上保证其唯一性,rowkey是按照字典顺序排序存储的,因此,设计rowkey的时候,要充分利用这个排序的特点,将经常读取的数据存储到一块,将最近可能会被访问的数据放到一块。但是这里的量不能太大,如果太大需要拆分到多个节点上去。
所以良好的rowkey设计,应当遵循三大原则,并且能让数据分散,从而避免热点问题。
 
以上就是本期的所有内容了,因为篇幅有限,所以rowkey的设计还没有讲完,明天将会继续更新大数据开发-rowkey的设计概述,希望大家明天也能追踪文章更新。
希望大家点个关注,及时收取最新文章推送,想了解更多敬请咨询加米谷大数据。
有问题的欢迎在评论区留言,如有侵权请告知。
热点排行
推荐文章
立即申请>>