一. 概述
ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以Standalone模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。
更多关于 ZooKeeper 的原理介绍请参考
- 《ZooKeeper 工作原理》:http://blog.csdn.net/u011414200/article/details/50184359
- 《 Zookeeper (Hadoop 权威指南)》:http://blog.csdn.net/u011414200/article/details/50249731
本次安装笔者搭建的是生产环境中的 ZooKeeper (即 “复制模式”),且安装的是 2014年3月的 ZooKeeper 3.4.6 版本。
二. 单机模式 (Standalone Mode)
在 hadoop5 用户下搭建
2.1 下载 ZooKeeper
从 Apache 的 ZooKeeper 发布页面 (http://zookeeper.apache.org/releases.html#download) 下载 ZooKeeper 的一个稳定版本
从笔者博客资源直接下载 ZooKeeper 3.4.6
注:将下载的 tar.gz 安装包直接放置在合适位置即可,笔者暂存放在 ~/softwares/tar_packages 目录下
2.2 解压 ZooKeeper 3.4.6
tar -zxvf ~/softwares/tar_packages/zookeeper-3.4.6.tar.gz -C ~/softwares/
2.3 配置环境变量,并使之生效
ZooKeeper 提供了几个能够运行服务并与之交互的二进制可执行文件,可以很方便地将包含这些二进制文件的目录加入命令行路径:
export ZOOKEEPER_HOME=/home/hadoop5/softwares/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin
然后再使环境生效:
source ~/.bash_profile
2.4 配置 zoo.cfg
先将 zoo_sample.cfg 拷贝为 zoo.cfg
cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg
vim $ZOOKEEPER_HOME/conf/zoo.cfg
修改如下:
tickTime=2000
dataDir=/home/hadoop5/softwares/zookeeper-3.4.6/data
clientPort=2181
这三个属性是以独立模式运行 ZooKeeper 所需的最低要求。其中 dataDir 可自定义设置,详情请参考附录中的 《标准的 Java 属性文件》 。
2.5 启动本地 ZooKeeper
- 启动服务
zkServer.sh start
- 查看进程 —— jps
QuorumPeerMain 是 ZooKeeper 的主进程
- 查看状态
zkServer.sh status
- 询问状态
使用 nc(telnet 也可以)发送 ruok 命令 (Are you OK?) 到监听端口,检查 Zookeeper 是否正在运行
echo ruok | nc localhost 2181
imok 是 ZooKeeper 在说 “I'm OK”
。还有其他一些用于管理 ZooKeeper 的命令,都采用类似的四字母组合,如附录中的 管理 《