HBASE的设计

hbase的表设计

表设计应当做到:

  • 1)防止数据热点问题,建表的时候,最好进行表的预分区。并且插入的时候,rk 不要顺序递增。预分区的个数,不要超过regionserver个数。具体以数据量进行预分区。
  • 2)列族不建议过多

hbase的列族设计

列族设计应该注意以下几点:

  • 1)将具有相同io属性的列放在同一个列族中。
    实际上io属性是很难界定的。所以需要注意第二点:
  • 2)列族设计不宜过多,一般不超过3个。实际上,大多数的hbase都是只有一个列族。
    如果列族过多,就会造成跨文件访问,查询时消耗资源过多。(不同的列族是存储在不同的物理文件中的)

hbase的行键设计

行键设计的三原则:

  • 1)唯一性
  • 2)不宜过长,一般是 0-100 byte。 一般 8byte 或者 16 byte。最好是8 的倍数。
    原因如下:
    • 2.1、行健存储在每一个列族文件中,即storefile 中。如果太大,造成大量磁盘空间浪费。
    • 2.2、行健信息,也会别写入到每一个store的memstore中,如果行键过大,造成内存空间的极大浪费。
    • 2.3、计算机的底层存储是 8 通道
  • 3)散列性
    为了避免数据热点,按照rowkey进行字典顺序排序的。如果rowkey过于集中,造成数据操作过于集中在 某一个或几个region上,造成数据热点问题。所以需要对数据进行打散。
    散列算法有:
    • 3.1、hash 算法
    • 3.2、加盐。随机数 + rowkey
    • 3.3、反转
      字符串反转(eg:手机号反转)
      时间戳反转
    • 3.4、对uuid 进行md5加密

避免数据热点,核心是避免高频访问的数据在同一个或个别几个region上。将数据访问均衡的分散在多个region上,合理设计rowkey。

rowkey设计依据:

  • 1)首先考虑业务需求,按照哪一个指标(手机号、uuid等)进行查询。
    eg:电信运营商设计rk, 采用 手机号+时间戳 ,查询话费、通话记录等
  • 2)避免热点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值