名称空间(namespace)

  • 默认两个名称空间:default、hbase
  • default默认创建表的位置,hbase存放系统表命名空间(namespace、meta)
  • 指令:create_namespace、list_namespace、drop_namespace、describe_namespace
  • 在命名空间建表:create “namespace:table”

    表设计

    列簇设计

    推荐1-2个,能使用1个就不要创建2个,因为影响性能

    版本设计

    如果项目不需要保存历史版本,直接按照默认配置VERSION=1即可。否则可将VERSION>1。但是也就意味着需要占用更多空间。

    数据压缩

    在创建表的时候,可针对列簇进行数据压缩,GZ压缩比最高,但是压缩和解压速度相对慢一些
    image.png
    alter ‘MOMOCHAT:MSG’, {_NAME => ‘C1’, COMPRESSION => ‘GZ’}

    表预分期

  • 指定start-key和end-key

  • 指定分区数量和分区策略(十六进制、十进制、完全随机)

create ‘MOMOCHAT:MSG’, {_NAME => ‘C1’, COMPRESSION => ‘GZ’},{NUMREGIONS=> 6,SPLITALGO=>’HexStringSplit’}

RowKey设计

RowKey是会按字典序排序的,HBase表会用RowKey来横向切分表。
无论是读和写我们都是用RowKey去定位到HRegion,然后找到HRegionServer。
HRegion上有两个很重要的属性:start-key和end-key。
首先要保证RowKey是唯一的,最大64k字节。在HBase里边提供了三种的查询方式:

  1. 全局扫描
  2. 根据一个RowKey进行查询
  3. 根据RowKey过滤的范围查询

    避免热点数据

  • 预分期
  • Rowkey设计:反转、加盐、hash

生成RowKey时,尽量进行加盐或者哈希的处理,这样很大程度上可以缓解数据热点问题。