HBase设计上的一些特性使其适用于大数据量的实时读写。
HBase集群主要有Zookeeper、MasterServer、RegionServer组成。
- Zookeeper保证HBase集群的高可用
- MasterServer用来管理元数据。
- RegionServer负责实际的数据读写请求处理。
Hbase中表是由一个或多个分区(Region)组成,Region由RegionServer进程管理,一个RegionServer管理多个Region。
表中的数据按照Rowkey被划分到不同的Region中,一个Region存储的是一段rowkey连续的数据。
这样在设计表时需要考虑数据的均衡性,如果按照连续的业务主键设计rowkey,那么数据就会集中存储在一个或几个连续的Region里,就发生了数据存储不均衡,同时导致读请求也会集中到固定的一个或几个RegionServer上,会出现单个RegionServer负载过高而导致请求响应过慢的情况。
所以在设计表时,尽量使表的rowkey随机打散,数据可以均匀的分布到集群的每个节点上,通过rowkey读取数据时先根据rowkey从元数据中确定rowkey所在的分区,然后客户端直接连发送rpc请求给数据所在的RegionServer,而不需要访问其它的RegionServer。