首页 >> 知识 >> 实战大数据,HBase 性能调优指南

实战大数据,HBase 性能调优指南

1 HBase 表结构设计调优1.1 Row Key 设计

HBase 中 row key 用来检索表中的记录,支持以下三种方式:

通过单个 row key 访问:即按照某个 row key 键值进行 get 操作;通过 row key 的 range 进行 scan:即通过设置 startRowKey 和 endRowKey,在这个范围内进行扫描;全表扫描:即直接扫描整张表中所有行记录。

在 HBase 中,row key 可以是任意字符串,最大长度 64KB,实际应用中一般为 10~100bytes,存为 byte[]字节数组,一般设计成定长的。

row key 是按照字典序存储,因此,设计 row key 时,要充分利用这个排序特点,将经常一起读取的数据存储到一块,将最近可能会被访问的数据放在一块。

举个例子:如果最近写入 HBase 表中的数据是最可能被访问的,可以考虑将时间戳作为 row key 的一部分,由于是字典序排序,所以可以使用 Long.MAX_VALUE - timestamp 作为 row key,这样能保证新写入的数据在读取时可以被快速命中。

Rowkey 规则:

rowkey 是一个二进制码流,长度越小越好,一般不超过 16 个字节,主要出于以下考虑:数据的持久化文件 HFile 中是按照 KeyValue 存储的,即你写入的数据可能是一个 rowkey 对应多个列族,多个列,但是实际的存储是每个列都会对应 rowkey 写一遍,即这一条数据有多少个列,就会存储多少遍 rowkey,这会极大影响 HFile 的存储效率;MemStore 和 BlockCache 都会将缓存部分数据到内存,如果 Rowkey 字段过长内存的有效利用率会降低,系统将无法缓存
网站地图