初识ZooKeeper

Hadoop下面的子项目ZooKeeper是一个用于协调分布式程序的服务。我们可以利用它来保证各个机器之间的数据同步。

单机环境运行ZooKeeper

1 下载ZooKeeper:http://labs.xiaonei.com/apache-mirror/hadoop/zookeeper/zookeeper-3.2.2/zookeeper-3.2.2.tar.gz

2 解压。

3 在conf目录下创建一个配置文件zoo.cfg,然后指定其中的内容为:

tickTime=2000
dataDir=/home/admin/aaron/data
clientPort=2181
4 创建/home/admin/aaron/data文件夹,用于存放ZooKeeper的同步数据。
5 启动ZooKeeper的Server: sh bin/zkServer.sh start
这样,我们的ZooKeeper的Server就运行起来了。我们将看到这样一些信息:

[admin@hadoop1 zookeeper-3.2.2]$ sh bin/zkServer.sh start
JMX enabled by default
Using config: /home/admin/aaron/zookeeper-3.2.2/bin/../conf/zoo.cfg
Starting zookeeper ...
STARTED

如果想要关闭,输入:

[admin@hadoop1 zookeeper-3.2.2]$ sh bin/zkServer.sh stop
JMX enabled by default
Using config: /home/admin/aaron/zookeeper-3.2.2/bin/../conf/zoo.cfg
Stopping zookeeper ...
STOPPED

多机环境运行ZooKeeper

单机环境适合于开发与调试,但是正真应用在生产环境,我们还需要使用可以容错的多机环境。

1 我们在3台机器(hadoop1,hadoop2,hadoop3)上分别下载并解压。

2 在conf目录下创建一个配置文件zoo.cfg,然后指定其中的内容为:

tickTime=2000
dataDir=/home/admin/aaron/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888

3 创建/home/admin/aaron/data文件夹(如果之前有数据,请先清空),用于存放ZooKeeper的同步数据。

4 在/home/admin/aaron/data文件夹中创建myid文件,hadoop1机器的内容为:1,hadoop2机器的内容为:2,hadoop3机器的内容为:3

5 分别在3台机器上启动ZooKeeper的Server:sh bin/zkServer.sh start

这样,我们的多机环境的ZooKeeper就启动起来了。现象是和单机一致的。

连接ZooKeeper Server

ZooKeeper的Server集群启动起来以后,我们就可以利用ZooKeeper的Client连接Server了。

我们在hadoop1机器上连接ZooKeeper集群:sh bin/zkCli.sh -server hadoop1:2181

成功后,出现如下的对话框

[zk: hadoop1:2181(CONNECTED) 0]

我们就可以再这里输入命令了。

显示所有的可以使用的命令:

[zk: hadoop1:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
        connect host:port
        get path [watch]
        ls path [watch]
        set path data [version]
        delquota [-n|-b] path
        quit
        printwatches on|off
        create [-s] [-e] path data acl
        stat path [watch]
        close
        history
        listquota path
        setAcl path acl
        getAcl path
        sync path
        redo cmdno
        addauth scheme auth
        delete path [version]
        setquota -n|-b val path

显示当前的数据:

[zk: hadoop1:2181(CONNECTED) 2] ls /
[zookeeper]

然后,我们添加一个新的数据

[zk: hadoop1:2181(CONNECTED) 4] create /alibaba gpcuster
Created /alibaba

再查看数据:

[zk: hadoop1:2181(CONNECTED) 5] ls /
[alibaba, zookeeper]

现在,就多了一个数据节点alibaba。

查看这个节点的值:

[zk: hadoop1:2181(CONNECTED) 6] get /alibaba
gpcuster
cZxid = 4294967298
ctime = Fri Jan 15 13:42:05 CST 2010
mZxid = 4294967298
mtime = Fri Jan 15 13:42:05 CST 2010
pZxid = 4294967298
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0
dataLength = 8
numChildren = 0

还有其他的命令,比如修改,删除等等。

More

我们现在只是搭建起来的Zookeeper的环境,以及通过命令行的方式操作。

接下来的我们会继续看看ZooKeeper是如何工作的,如何通过编程的方式来操作,以及如何在实际的应用中使用ZooKeeper。

相关推荐