首先,Zookeeper是一个高效而可靠地协同工作系统,它用在协调在分布式应用上的各种服务。Zookeeper主要是用来处理类似下面这样的场景问题:消息在网络中的两个节点间传输时,由于网络错误或者其他问题导致传输过程发生错误,则发送方无法得知接受方是否得到完整的传输信息,为了确保消息是否以准确到达,发送方必须再次向接收方发送消息询问,否则无法准确得知自己发送的消息是否准确到达。
Zookeeper可以集中对这类问题进行监控,它可以构建一个有效防止单点失效以及处理负载的分布式应用系统,它可以提供协作和失效恢复服务,管理用于备份和数据迁移的问题。
Zookeeper工作原理图如下所示:
各个服务器之间的关系就像“领导”跟“群众”的关系,“群众”只会选择选择其中一个作为他们的leader,当这个leader出现问题了(比如腐败了),“群众”会再次投票选举一个新的leader,以此类推。当然具体怎么选举有内部的选举算法作支撑。
linux下Zookeeper的三台机器搭建的小集群环境下简单配置如下:
①下载Zookeeper,http://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/,并解压到目录:/home/johey/hadoop/zookeeper-3.4.4
②将conf目录下的zoo_sample.cfg文件改名为:zoo.cfg,并做如下配置:
tickTime=2000
initLimit=10
syncLimit=5
dataDir =/home/johey/tmp/zookeeper/data
clientPort =2181
server.1=192.168.11.6:7000:7001
server.2=192.168.11.7:7000:7001
server.3=192.168.11.8:7000:7001
③在相应的服务器dataDir目录下分别建立myid文件,写入相应的编号,如机器192.168.11.6的myid内容为1.使用命令 . /zkServer.sh start开启服务。