在HBase中,ZooKeeper起着重要的作用,主要有以下几个方面:
1. 协调服务:ZooKeeper用于管理HBase集群中各个节点的状态信息,协调各个节点之间的通信和协作,确保集群中各个节点之间的一致性和可靠性。
2. 元数据管理:HBase的元数据信息(如表结构、region分布等)会存储在ZooKeeper中,HBase可以通过ZooKeeper来获取和维护这些元数据信息。
3. 选主机制:HBase集群中的Master节点是由ZooKeeper进行选举产生的,ZooKeeper会负责监控Master节点的状态,并在Master节点发生故障时进行重新选举。
4. 分布式锁管理:ZooKeeper提供了分布式锁的机制,HBase可以利用ZooKeeper来实现分布式锁,确保数据的一致性和并发性。
总结
①、在HBase中,Zookeeper充当了注册中心
②、当HBase启动之后,会自动的在Zookeeper上来注册一个/hbase节点
进入到Zookeeper客户端 zkCli.sh
ls /
③、当Active HMaster启动之后,会自动的在Zookeeper上注册一个临时节点/hbase/master-当Active HMaster宕机之后,这个临时节点就会消失,此时Zookeeper就会从backup-masters节点中选择最早注册的节点来切换为Active状态
④、当Backup HMaster启动之后,会自动的在Zookeeper的/hbase/backup-masters节点上注册一个临时子节点
⑤、当HRegionServer启动之后,也会自动的在Zookeeper的/hbase/rs节点下,来注册子节点
3、HMaster
①、在HBase中,允许用户在任意一台安装了HBase的节点上来启动HMaster,理论上不限制HMaster的数量
②、HMaster启动命令
查看hbase 注册信息master是有的
我们kill -9 3048
再查看时发现hbase消失了
hbase-daemon.sh start master
这是发现master又出现了
③、在HBase中,如果启动了多个HMaster,那么HMaster之间就会分为Active和Backup两种状态
④、如果启动多个HMaster,那么最先注册到Zookeeper上的HMaster就会成为Active状态,后注册到Zookeeper上的HMaster就会成为Backup状态
⑤、当Active HMaster接收到请求之后,需要考虑将数据同步给其他的Backup HMasters。同步的节点数量越多,此时效率就会越低
⑥、因此在HBase中,虽然理论上不限制HMaster的个数,但是实际过程中,HMaster的个数一般不会超过3个:1个Active HMaster+2个Backup HMasters
⑦、Active HMaster会实时监控Zookeeper上/hbase/backup-masters下的节点变化以确定需要同步的节点是哪几个
⑧、HMaster的作用
Ⅰ、管理HRegionServer。需要注意的是,HMaster对HRegionServer的管理权限并不大,只能决定HRegion交由哪一个HRegionServer来进行管理
Ⅱ、记录和存储元数据。HBase中的元数据包含namespace名、table名、column family名以及属性信息等。注意,在HBase中,列不是元数据,因为列可以动态增删 - 也就意味着凡是产生元数据的操作会经过HMaster,不产生元数据的操作不会经过HMaster。
DDL(Data Defination Language,数据定义语言,例如create/drop等)以及namespace操作会产生元数据
DML(Data Manipulation Language,数据操纵定义,例如put/get/scan/delete等)语言不会产生元数据