HBase 配置与设计规则

HBase 入门容易,但如果想要把 HBase 用好,需要紧密结合实际业务,根据不同的业务设计 HBase 表结构和存储策略。下面是在学习和工作中的几点总结,拿出来分享。

配置案例:

如果没有很重的读负载,每台机器给HBase最大使用6T的磁盘空间;Java Heap 设置为32G,每个region 20G,每个memstores 128M,其他默认配置。

  1. 列族数量

HBase对于2个或3个以上的列族的支持不好,所以应该尽量减少列族的数量。当一个列族承载着大量数据进行flushes的时候,在每个region上的 flushing和 compactions将被下线;相邻的列族也会被flush即使列族承载的数据量很小。当许多列族存在 flush和compaction的时候,可能浪费大量的不必要的IO。

  1. Row 设计

可预测的散列

* 35.2 单调递增的Row Keys*

失败案列:monotonically increasing values are bad

时间序列

成功案例: opentsdb

35.3 最小化row和column的大小

  1. 支持的数据类型

HBase支持”bytes-in/bytes-out”,任何可以转换成byte数组的值都可以存储在HBase中。输入可以是字符串、数字、复杂对象,甚至是图片。

当值的大小有实际的限制(HBase存储10-50M的对象将可能太大而不适合存储);

  1. Joins

如果你有多张表,不要忘记把需要joins的潜在因素加入到表的设计中。

  1. 二级索引和胶体查询

周期更新的二级索引

在另一张表中建立二级索引,并通过MR任务周期的更新。任务在一天内执行,但是依赖于载入数据的策略,索引表很有可能和主数据表不一致。

双写二级索引

写入数据表的同时,写入索引表。如果数据表数据已经存在,则通过MR任务建立二级索引。

简单表

这时间范围广(例如一年的报告)和数据量庞大的场景,简单表是普遍的方法。

协处理器二级索引

43. Schema Design Case Studies

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值