ZooKeeper 深入浅出之一:安装和运行 ZooKeeper

原创 zookeeper

ZooKeeper 深入浅出系列根据 《Hadoop 权威指南 第四版》 英文原版翻译整理。

概述

Zookeeper 是 Hadoop 分布式调度服务,用来构建分布式应用系统。构建一个分布式应用是一个很复杂的事情,主要的原因是我们需要合理有效的处理分布式集群中的部分失败的问题。例如,集群中的节点在相互通信时,A节点向B节点发送消息。A节点如果想知道消息是否发送成功,只能由B节点告诉A节点。那么如果B节点关机或者由于其他的原因脱离集群网络,问题就出现了。A节点不断的向B发送消息,并且无法获得B的响应。B也没有办法通知A节点已经离线或者关机。集群中其他的节点完全不知道B发生了什么情况,还在不断的向B发送消息。这时,你的整个集群就发生了部分失败的故障。

Zookeeper不能让部分失败的问题彻底消失,但是它提供了一些工具能够让你的分布式应用安全合理的处理部分失败的问题。

安装和运行 Zookeeper

我们采用 standalone 模式,安装运行一个单独的 zookeeper 服务。安装前请确认您已经安装了 Java 运行环境。

我们去 Apache ZooKeeper releases page 下载 zookeeper 安装包,并解压到本地:

% tar xzf zookeeper-x.y.z.tar.gz

ZooKeeper 提供了一些可执行程序的工具,为了方便起见,我们将这些工具的路径加入到 PATH 环境变量中:

% export ZOOKEEPER_HOME=~/sw/zookeeper-x.y.z
% export PATH=$PATH:$ZOOKEEPER_HOME/bin

运行 ZooKeeper 之前我们需要编写配置文件。配置文件一般在安装目录下的 conf/zoo.cfg。我们可以把这个文件放在 /etc/zookeeper 下,或者放到其他目录下,并在环境变量设置 ZOOCFGDIR 指向这个个目录。下面是配置文件的内容:

tickTime=2000
dataDir=/Users/tom/zookeeper
clientPort=2181

tickTime 是 zookeeper 中的基本时间单元,单位是毫秒。datadir 是 zookeeper 持久化数据存放的目录。clientPort 是 zookeeper 监听客户端连接的端口,默认是 2181.

启动命令:

% zkServer.sh start

我们通过 nc 或者 telnet 命令访问 2181 端口,通过执行 ruok(Are you OK?) 命令来检查 zookeeper 是否启动成功:

% echo ruok | nc localhost 2181
imok

那么我看见 zookeeper 回答我们“I’m OK”。下表中是所有的 zookeeper 的命名,都是由4个字符组成。

3.5.0 以上的版本会有一个内嵌的 web 服务,通过访问 http://localhost:8080/commands 来访问以上的命令列表。

如果觉得这对你有用,请随意赞赏,给与作者支持
评论 0
最新评论