现在的位置: 首页 > 综合 > 正文

初识ZooKeeper

2013年10月06日 ⁄ 综合 ⁄ 共 2502字 ⁄ 字号 评论关闭

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。

抱歉!评论已关闭.