一、ZooKeeper概述
Zookeeper 是为分布式应用程序提供高性能协调服务的工具集合,也是Google的Chubby一个开源的实现,是Hadoop 的分布式协调服务。它包含一个简单的原语集,分布式应用程序可以基于它实现配置维护、命名服务、分布式同步、组服务等。Zookeeper可以用来保证数据在ZK集群之间的数据的事务性一致。其中ZooKeeper提供通用的分布式锁服务,用以协调分布式应用。
Zookeeper作为Hadoop项目中的一个子项目,是 Hadoop集群管理的一个必不可少的模块,它主要用来解决分布式应用中经常遇到的数据管理问题,如集群管理、统一命名服务、分布式配置管理、分布式消息队列、分布式锁、分布式协调等。在Hadoop中,它管理Hadoop集群中的NameNode,还有在Hbase中Master Election、Server 之间状态同状步等。
Zoopkeeper 提供了一套很好的分布式集群管理的机制,就是它这种基于层次型的目录树的数据结构,并对树中的节点进行有效管理,从而可以设计出多种多样的分布式的数据管理模型。
Ps:进行负载均衡的高可用的架构
二、下载与安装
1、下载
官方网址:http://zookeeper.apache.org/
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
2、解压
tar -zvxf zookeeper-3.4.8.tar.gz
3、配置conf/zoo.cfg
进入根目录的conf目录里,复制一份zoo_example.cfg 文件为zoo.cfg
cd conf
cp zoo_sample.cfg zoo.cfg
dataLogDir 日志文件夹
ClientPort 端口默认是2181
Server.1 zookeeper集群里节点ID,这个id是在整个集群里唯一的。
同时编写data/myid 的值为 1
三、启动与停止
1、启动
进入根目录的bin目录,执行:
./zkServer.sh start
2、停止
进入根目录的bin目录,执行:
四、集群部署
1、myid 文件
3台以上的机器可以组成集群。个数是3/5/7奇数台机器。偶数台机器没有用。
本例使用3台机器演示搭建集群。这3台机器里zookeeper的ID分别为1、2、3。配置如下所示:
server.1=10.10.56.80:2888:3888
server.2=10.10.56.81:2888:3888
server.3=10.10.56.82:2888:3888
server.A=B:C:D
其中A是一个数字,标示这是第几号服务器;B是这个服务器的ip地址;C标示的是这个服务器与集群中的Leader服务器交换信息的端口;D标示的是万一集群中Leader服务器挂了,需要一个端口来进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
集群中ID不能重复。ID的配置是在$dataDir/myid中配置的。myid是一个文件,文件的内容就是ID。
3、状态监测
./zkServer.sh status
====================================================
./zkServer.sh status
./zkCli.sh -server 127.0.0.1:2181
create /c1project c1projecttest 增
get /c1project 查
ls / 查
rmr /c1project 删除