文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州
▲ 本章节目的
⚪ 掌握Hbase的基本架构;
⚪ 掌握Hbase的读写流程;
⚪ 掌握Hbase的设计与优化;
一、基本架构
1. HRegion
1. 在HBase中,会将一个表从行键方向上进行切分,切分成1个或者多个HRegion。
2. 切分之后,每一个HRegion都会交给某一个HRegionServer来进行管理。
3. 一个表至少会包含1个HRegion,可以包含多个HRegion。
4. 在HBase中,行键是有序的,因此从行键方向上来进行的切分,所以HRegion之间的数据是不交叉的。
5. 因为HRegionServer会交给HRegionServer来管理,并且HRegion之间的数据相互不交叉,所以保证请求不会集中于某一个节点上而是会分散到不同的节点上。
6. 随着运行时间的推移,HRegion管理的数据会不断增多,达到指定条件的时候,会自动的进行分裂。
7. 每一个HRegion包含1个到多个HStore,HStore的数量由列族的数量来决定。
8. 每一个HStore都会包含1个memStore以及包含0到多个StoreFile/HFile。
2. Zookeeper的作用
1. 在HBase中,Zookeeper充当了注册中心。
2. 当HBase启动之后,会自动的在Zookeeper上来注册一个/hbase节点。
3. 当Active HMaster启动之后,会自动的在Zookeeper上注册一个临时节点/hbase/master - 当Active HMaster宕机之后,这个临时节点就会消失,此时Zookeeper就会从Backup HMasters中选择最早注册的节点来切换为Active状态。
4. 当Backup HMaster启动之后,会自动的在Zookeeper的/hbase/backup-masters节点上注册一个临时子节点。
5. 当HRegionServer启动之后,也会自动的在Zookeeper的/hbase/rs节点下来注册子节点。
3. HMaster
1. 在HBase中,允许用户在任意一台安装了HBase的节点上来启动HMaster,理论上不限制HMaster的数量。
2. HMaster启动命令:
hbase-daemon.sh start master
3. 在HBase中,如果启动了多个HMaster,那么HMaster之间就会分为Active和Backup两种状态。
4. 如果启动多个HMaster,那么最先注册到Zookeeper上的HMaster就会成为Active状态,后注册到Zookeeper上的HMaster就会成为Backup状态。
5. 当Active HMaster接收到请求之后,需要考虑将数据同步给其他的Backup HMasters。同步的节点数量越多,此时效率就会越低。
6. 因此在HBase中,虽然理论上不限制HMaster的个数,但是实际过程中,HMaster的个数一般不会超过3个:1个Active HMaster+2个Backup HMasters。
7. Active HMaster会实时监控Zookeeper上/h