关闭

zookeeper简单搭建(及代码)

标签: zookeeper
401人阅读 评论(0) 收藏 举报
分类:

1、安装zookeeper
zookeeper安装环境为linux,下载的版本为:http://www.apache.org/dist/zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz
zookeeper的安装基本上可以按照 http://hadoop.apache.org/zookeeper/docs/current/ zookeeperStarted.html 这个页面上的步骤完成安装,这里主要介绍下部署一个集群的步骤,因为这个官方页面似乎讲得并不是非常详细(Running Replicated Zookeeper)。

由于手头机器不足,所以在一台机器上部署了3个server,如果你手头也比较紧,也可以这么做。那么我建了3个文件夹,如下
server1 server2 server3

然后每个文件夹里面解压一个zookeeper的下载包,并且还建了几个文件夹,总体结构如下,最后那个是下载过来压缩包的解压文件
data dataLog logs zookeeper-3.3.2

那么首先进入data目录,创建一个myid的文件,里面写入一个数字,比如我这个是server1,那么就写一个1,server2对应myid文件就写入2,server3对应myid文件就写个3

然后进入zookeeper-3.3.2/conf目录,那么如果是刚下过来,会有3个文件,configuration.xml, log4j.properties,zoo_sample.cfg,这3个文件我们首先要做的就是在这个目录创建一个zoo.cfg的配置文件,当然你可以把zoo_sample.cfg文件改成zoo.cfg,配置的内容如下所示:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=xxxx/zookeeper/server1/data
dataLogDir=xxx/zookeeper/server1/dataLog
clientPort=2181
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

2、启动zookeeper服务端
进入到bin目录中,执行命令,./zkServer.sh start启动,(也可以使用./zkServer.sh start zoo.cfg来指定配置文件进行启动)

3、启动客户端
./zkCli.sh –server 127.0.0.1:2181,这个实际上是简单的模拟,不用启动,直接在远程用java等来连接执行也是一样的。

4、java连接zookeeper
使用到两个java包,一个是log4j,一个是zookeeper的jar包。其中zookeeper的jar包在这里可以下载http://www.java2s.com/Code/Jar/z/Downloadzookeeperjar.htm
log4j的java包任意下载一个就行了,我工程直接利用maven下载的。

import java.io.IOException;

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;


public class Main {

    public static void main(String[] args) throws IOException, KeeperException, InterruptedException {
        // TODO Auto-generated method stub
        ZooKeeper zk = new ZooKeeper("10.218.137.73:2181", 500000,new Watcher() {
               // 监控所有被触发的事件
                 public void process(WatchedEvent event) {
               //dosomething
               }
          });

        //创建一个节点root,数据是mydata,不进行ACL权限控制,节点为永久性的(即客户端shutdown了也不会消失)
        zk.create("/jianghuiwen", "mydata".getBytes(),Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
    }

}

上面一段是代码,执行完毕后,到服务端利用命令查看,可以发现已经生成了节点。
这里写图片描述

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    欢迎访问IT老蒋的博客
    老蒋,新浪微博:蒋辉文_USTC,腾讯实习生,现签约阿里巴巴,从事java开发,欢迎多多交流
    邮箱
    jianghuiwen2012#163.com
    个人资料
    • 访问:275344次
    • 积分:6010
    • 等级:
    • 排名:第4170名
    • 原创:333篇
    • 转载:40篇
    • 译文:1篇
    • 评论:51条
    最新评论