HBase 如何设计 rowkey?

Johngo学长 HBase 46
  • RowKey⻓度原则
    Rowkey是一个二进制码流,Rowkey的⻓度被很多开发者建议说设计在10~100个字节,不过建议是越短越 好,不要超过16个字节。
    原因如下:
    • 数据的持久化文件HFile中是按照KeyValue存储的,如果Rowkey过⻓比如100个字节,1000万列数据光Rowkey就要占用100*1000万=10亿个字节,将近1G数据,这会极大影响HFile的存储效率;
    • MemStore将缓存部分数据到内存,如果Rowkey字段过⻓内存的有效利用率会降低,系统将无法缓存更多的数据,这会降低检索效率。因此Rowkey的字节⻓度越短越好。
    • 目前操作系统是都是64位系统,内存8字节对⻬。控制在16个字节,8字节的整数倍利用操作系统的最佳 特性。
  • RowKey散列原则
    如果Rowkey是按时间戳的方式递增,不要将时间放在二进制码的前面,建议将Rowkey的高位作为散列字 段,由程序循环生成,低位放时间字段,这样将提高数据均衡分布在每个Regionserver实现负载均衡的几 率。如果没有散列字段,首字段直接是时间信息将产生所有新数据都在一个RegionServer上堆积的热点现 象,这样在做数据检索的时候负载将会集中在个别RegionServer,降低查询效率。
  • RowKey唯一原则
    必须在设计上保证其唯一性。

回复

我来回复
  • 暂无回复内容

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部