问题
HBase默认建表时有一个 region,在数据写入时,所有数据都会写入这个默认的 region,随着数据量的不断 增加,此 region 已经不能承受不断增长的数据量,会进行 split ,分成2个 region
在此过程中,会产生两个问题:
region split会消耗宝贵的集群I/O资源。数据往一个
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
