hbase-面试题

描述Hbase的rowKey的设计原则.

 

Rowkey长度原则

Rowkey 是一个二进制码流,Rowkey 的长度被很多开发者建议说设计在10~100 个字节,

不过建议是越短越好,不要超过16 个字节。

原因如下:

(1)数据的持久化文件HFile 中是按照KeyValue 存储的,如果Rowkey 过长比如100 个

字节,1000 万列数据光Rowkey 就要占用100*1000 万=10 亿个字节,将近1G 数据,这会极

大影响HFile 的存储效率;

(2)MemStore 将缓存部分数据到内存,如果Rowkey 字段过长内存的有效利用率会降

低,系统将无法缓存更多的数据,这会降低检索效率。因此Rowkey 的字节长度越短越好。

(3)目前操作系统是都是64 位系统,内存8 字节对齐。控制在16 个字节,8 字节的

整数倍利用操作系统的最佳特性。

Rowkey散列原则

如果Rowkey 是按时间戳的方式递增,不要将时间放在二进制码的前面,建议将Rowkey

的高位作为散列字段,由程序循环生成,低位放时间字段,这样将提高数据均衡分布在每个

Regionserver 实现负载均衡的几率。如果没有散列字段,首字段直接是时间信息将产生所有

新数据都在一个 RegionServer 上堆积的热点现象,这样在做数据检索的时候负载将会集中

在个别RegionServer,降低查询效率。

Rowkey唯一原则

必须在设计上保证其唯一性。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值