为何要预分区?
- 增加数据读写效率
- 负载均衡,防止数据倾斜
- 方便集群容灾调度region
- 优化Map数量
增加数据读写效率: 默认方式所有数据存在一个节点上,预分区将数据分散到多各节点上。
负载均衡,防止数据倾斜: 数据的rowkey分成多个区间,每个区间就是一个region,数据写入时,写入自己所在的范围的region
方便集群容灾调度region: 将数据分散存储到了多个region中,region的粒度更小
优化Map数量
原始(未使用预分区)的分区(region)是如何实现的??
数据表在创建时,只有一个region,随着数据量的增加,region之间变大,达到阈(10g)值分裂成两个region.
一个region只能在一个regionserver内,此时,数据的读写都依赖于一个节点(或少量的节点)
大量数据的读取都在一个节点。如何优化??
方案:在建表时人为指定这个表含有多个region(不使用默认10G 一分割)。
create 'staff001','info','parti