千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > HBase系列常见面试题汇总---怎样合理设置HBase RowKey

HBase系列常见面试题汇总---怎样合理设置HBase RowKey

来源:千锋教育
发布人:syq
时间: 2022-08-12 10:46:10 1660272370

  Rowkey 长度

  Rowkey 是一个二进制码流,建议越短越好,一般不超过 16 个字节,主要是出于以下的考虑:

  数据的持久化文件 HFile 中是按照 KeyValue 存储的,即你写入的数据可能是一个 RowKey 对应多个列族,多个列,但是实际的存储是每个列都会对应 Rowkey 写一遍,即这一条数据有多少个列,就会存储多少遍 Rowkey,这会极大影响 HFile 的存储效率

怎样合理设置HBase RowKey

  MemStore 和 BlockCache 都会将缓存部分数据到内存,如果 Rowkey 字段过长内存的有效利用率会降低,系统将无法缓存更多的数据,这会降低检索效率。

  目前操作系统一般都是 64 位系统,内存 8 字节对齐。控制在 16 个字节,8 字节的整数倍,利用操作系统的最佳特性。

  Rowkey 散列设计

  HBase 的 Rowkey 是按照字典序排列的,而数据分布在 RegionServer 上的方式是做高位哈希,所以如果我们的 Rowkey 首位存在大量重复的值那么很可能会出现数据倾斜问题,关于数据倾斜的问题下面会详细说明,总之,原则上就是Rowkey 的首位尽量为散列。

  常访问的数据放到一起

  对于需要批量获取的数据,比如某一天的数据,可以把一整天的数据存储在一起,即把 rowkey 的高位设计为时间戳,这样在读数据的时候就可以指定 Start RowKey 和 End RowKey 做一个 scan 操作,因为高位相同的 Rowkey 会存储在一起,所以这样读是一个顺序读的过程,会比较高效。但是这样有一个很明显的问题,违背了上一条Rowkey 散列设计原则,很可能会出现数据倾斜问题。所以说没有最好的设计,具体如何权衡就得看实际业务场景了

  更多关于大数据培训的问题,欢迎咨询千锋教育在线名师,如果想要了解我们的师资、课程、项目实操的话可以点击咨询课程顾问,获取试听资格来试听我们的课程,在线零距离接触千锋教育大咖名师,让你轻松从入门到精通。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT