Zookeeper(一)
介绍
分布式协作。zookeeper是google的chubby项目开源实现。最早是hadoop的子项目。
小米米聊、淘宝Taokeeper其实类zookeeper。
Kafka使用zookeeper。消息发布订阅,其中zk就是用于检测节点崩溃。实现主题的发现,并且保持主题的生产和消费状态。
Hbase三段查找,Root-Region=》Meta Region=》Region(Table)。hbase的元数据信息放在HBase。HMaster挂掉,马上要节点恢复。
Hadoop。NameNode(SecondaryNameNode),HA Hadoop。一般情况下一个简单的hadoop集群,只有一个NameNode,如果NameNode挂掉,hadoop集群不可用。HA Haoop里面就要用到zk。
解决的问题
- Master节点管理。master高可用(挂掉以后,谁来负责工作),保证唯一。
- 配置文件管理。统一把配置文件存在zk,由zk统一分发。
- 发布与订阅。发布者(producer)将数据发布到zk节点上,供订阅者(consumer动态获取)。
- 分布式锁。分布式环境访问同一个资源,由第三方配锁实现。由zk统一进行协调,保证数据一致性。
- 集群的管理。worker集群监控。
安装与配置
1、下载
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
2、解压
tar -xzvf zookeeper-3.4.9.tar.gz
3、修改配置
../conf/zoo_sample.cfg
# 会话时间,以毫秒为单位 tickTime=2000 # master与slave通讯时间,以秒为单位 initLimit=10 # master与slave心跳检测时间,以秒为单位 syncLimit=5 # 保存ZK快照和数据 dataDir=/usr/zookeeper/data/zk1 # 客户端端口 clientPort=2181 # service.1代表服务器表示,需在dataDir创建myid文件,内容是1;localhost表示master服务器;第一个端口表示通讯端口;第二个端口表示选举端口 service.1=localhost:2888:3888 service.2=localhost:2889:3889 service.3=localhost.2890:3890
常用API
启动
[root@localhost conf]# zkServer.sh start /usr/local/zookeeper-3.4.6/conf/zoo1.cfg
停止
[root@localhost conf]# zkServer.sh stop /usr/local/zookeeper-3.4.6/conf/zoo1.cfg
查看状态
[root@localhost conf]# zkServer.sh status /usr/local/zookeeper-3.4.6/conf/zoo1.cfg
1. Master节点管理