hbase2.1.x 预分区设计(热点问题)

问题

HBase默认建表时有一个 region,在数据写入时,所有数据都会写入这个默认的 region,随着数据量的不断 增加,此 region 已经不能承受不断增长的数据量,会进行 split ,分成2个 region

在此过程中,会产生两个问题:

  1. region split 会消耗宝贵的集群I/O资源。

  2. 数据往一个 region 上写,会有 写热点 问题。

解决

建表时,创建多个 region

数据如何存到各个 region ?

每个 region 指定 start key 和 end key(左开右闭,不包括左边的,包含右边的)

如果添加的数据,其 rowkey 符合某个 region 的 rowkey 范围,则该数据交给此 region 维护

rowkey的设计

rowkey 设计的合理,能均匀的命中各个 region 的 rowkey 范围,就不会存在 写热点 问题

预分区数量

region 数量是按照 数据量 预估的

数量 = 节点的倍数。默认 region 的大小是 10G,预估 1年的数据大小是 10T,那么 10T / 10G = 10000G / 10 G = 1000个region

即:可以预设 1000个region


原文出处:/show_1IX1yBxOM9bT.html