ZooKeeper入门简介及配置使用.pdf
文本预览下载声明
ZooKeeper系列之⼀:ZooKeeper简介
ZooKeeper 是⼀个为分布式应⽤所设计的分布的、开源的协调服务。分布式的应⽤
可以建⽴在同步、配置管理、分组和命名等服务的更⾼级别的实现的基础之上。
ZooKeeper 意欲设计⼀个易于编程的环境,它的⽂件系统使⽤我们所熟悉的⽬录树结构。
ZooKeeper 使⽤ Java 所编写,但是⽀持 Java 和 C 两种编程语⾔。
众所周知,协调服务⾮常容易出错,但是却很难恢复正常,例如,协调服务很容易处于
竞态以⾄于出现死锁。我们设计 ZooKeeper 的⽬的是为了减轻分布式应⽤程序所承担的协
调任务。
ZooKeeper系列之⼆:ZooKeeper数据模型、命名空
间以及节点的概念
ZooKeeper数据模型和层次命名空间
提供的命名空间与标准的⽂件系统⾮常相似。⼀个名称是由通过斜线分隔开的路径名
序列所组成的。ZooKeeper 中的每⼀个节点是都通过路径来识别。
下图是Zookeeper 中节点的数据模型,这种树形结构的命名空间操作⽅便且易于理解。
图:ZooKeeper层次命名空间
ZooKeeper中节点和临时节点
ZooKeeper 的节点是通过像树⼀样的结构来进⾏维护的,并且每⼀个节点通过路径来
标⽰以及访问。除此之外,每⼀个节点还拥有⾃⾝的⼀些信息,包括:数据、数据长度、
创建时间、修改时间等等。从这样⼀类既含有数据,又作为路径表标⽰的节点的特点中,
可以看出,ZooKeeper的节点既可以被看做是⼀个⽂件,又可以被看做是⼀个⽬录,它同
时具有⼆者的特点。为了便于表达,今后我们将使⽤Znode来表⽰所讨论的ZooKeeper节
点。
具体地说,Znode维护着数据、ACL (access control list ,访问控制列表)、时间戳等
交换版本号等数据结构,它通过对这些数据的管理来让缓存⽣效并且令协调更新。每当
Znode 中的数据更新后它所维护的版本号将增加,这⾮常类似于数据库中计数器时间戳的
操作⽅式。
另外Znode还具有原⼦性操作的特点:命名空间中,每⼀个Znode的数据将被原⼦地
读写。读操作将读取与Znode相关的所有数据,写操作将替换掉所有的数据。除此之外,
每⼀个节点都有⼀个访问控制列表,这个访问控制列表规定了⽤户操作的权限。
ZooKeeper 中同样存在临时节点。这些节点与session同时存在,当session⽣命周期结束,
这些临时节点也将被删除。临时节点在某些场合也发挥着⾮常重要的作⽤。
ZooKeeper系列之三:ZooKeeper的安装
ZooKeeper的安装模式分为三种,分别为:单机模式(stand-alone )、集群模式和集群伪
分布模式。ZooKeeper 单机模式的安装相对⽐较简单,如果第⼀次接触ZooKeeper的话,
建议安装ZooKeeper单机模式或者集群伪分布模式。
1)单机模式
⾸先,从Apache官⽅⽹站下载⼀个ZooKeeper 的最近稳定版本。
/zookeeper/releases.html
ZooKeeper 要求 JAVA 的环境才能运⾏,并且需要 JAVA6 以上的版本,可以从 SUN
官⽹上下载,并对 JAVA 环境变量进⾏设置。除此之外,为了今后操作的⽅便,我们需要
对 ZooKeeper 的环境变量进⾏配置,⽅法如下,在 /etc/profile ⽂件中加⼊如下的内容:
#Set ZooKeeper Enviroment
export ZOOKEEPER_HOME=/root/hadoop-0.20.2/zookeeper-3.3.1
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
ZooKeeper 服务器包含在单个 JAR ⽂件中,安装此服务需要⽤户创建⼀个配置⽂
档,并对其进⾏设置。我们在 ZooKeeper-*.*.* ⽬录(我们以当前 ZooKeeper 的最新版
3.3.1 为例,故此下⾯的“ ZooKeeper-*.*.* ”都将写为“ ZooKeeper-3.3.1” )的 conf ⽂件夹下
创建⼀个 zoo.cfg ⽂件,它包含如下的内容:
tickTime=2000
dataDir=/var/zookeeper
显示全部