Zookeeper

Zookeeper是Paxos算法的Java开源实现,配合Hadoop、Pig、Hive等软件使用。它用于保证分佈式系统中一份数据的一致性,即该份数据存放于若干台机器上,zookeeper保证无论客户端从哪台机器读取该份数据,值都是一样的;无论从哪台机器更改该份数据,都会一致地同步到其他机器上。

Zookeeper维护的是一份类似文件系统的树形结构,根目录是/,每个节点本身又是文件夹,可以存放子节点,同时又可以存放信息。可以理解为所有节点都是可以像文件一样存放信息的文件夹。

1. 安装

Zookeeper是Java实现,支持跨平台,可在Windows和Linux操作系统上运行。从官网下载zookeeper压缩包,例如zookeeper-3.4.5.tar.gz,然后解压至某一文件夹中。

1.1 单机模式

zookeeper可以运行在单台机器上,主要可用于开发调试。将conf/zoo_sample.cfg更名为conf/zoo.cfg,里面有几个配置项需要注意:

tickTime=2000 # 服务器和客户端心跳间隔,毫秒
dataDir=/tmp/zookeeper # 存放数据的地方,建议修改成非/tmp/下的路径
clientPort=2181 # 服务器监听端口

启动zookeeper,包括Linux下和Windows下两种方式:

bin/zkServer.sh start # Linux下
bin/zkServer.cmd start # Windows下

停止zookeeper:

bin/zkServer.sh stop # Linux下
bin/zkServer.cmd stop # Windows下

1.2 集群模式

简单的,只需要在conf/zoo.cfg加多几项目配置:

initLimit=5 # 初始化最长等待ticket数
syncLimit=2 # 机器间传递信息最长等待ticket数
server.1=192.168.211.1:2888:3888
server.2=192.168.211.2:2888:3888

关于server.A=B:C:D的配置,A表示第几号服务器,B是该机器IP地址,C是机器与leader机器通讯的端口,D是选举leader机器的端口。

2 基本操作

2.1 命令行操作

Linux或Windows都有一个连接到zookeeper的命令行客户端:

bin/zkCli.sh -server 127.0.0.1:2181 # Linux下
bin/zkCli.cmd -server 127.0.0.1:2181 # Windows下

参考文档:1 2 及常用命令:

help # 显示帮助
ls / # 显示文件目录(节点)
get / # 获取文件目录(节点)的信息,包括值、创建修改时间、版本、子目录个数
create /zk myData # 在根目录创建一个叫/zk的节点,值为myData
set /zk myData2 # 设置节点/zk的值
delete /zk # 删除某个节点

2.2 Java API操作

3. 实战

文档更新时间: 2018-11-10 19:12   作者:nick