zookeeper第一课:编程环境搭建和结点操作

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34005042/article/details/85105651


   Zookeeper是很多开源项目的基础架构,比如HBase/Hadoop/Solr……学习Zookeeper能更好地了解这些项目的基本原理。毕竟熟悉程度决定使用高度。Zookeeper的编程环境搭建非常容易。在这里记录一下在win7下搭建Zookeeper编程环境的过程。


一、下载Zookeeper


地址http://download.nextag.com/apache/zookeeper/ 。我下载的是zookeeper-3.4.5 。个人觉得开发的时候不要用最新的,除非对该开源项目已经非常熟悉,不怕踩坑。


二、服务端环境搭建


首先把下载到的zookeeper解压,我解压到D:\source_code\zookeeper-3.4.5 。解压后,目录如下:


wKioL1NnHtnAqyjFAAH9xLwmr-w691.jpg

然后把conf\zoo_sample.cfg修改成zoo.cfg,打开zoo.cfig,内容如下:


wKioL1NnHuyTZpS6AAIQyqEpCmE855.jpg

dataDir=/tmp/zookeeper修改成dataDir=D:\\zk_tmp (zookeeper一般跑在linux服务器。)


至于zoo.cfg里面的参数及其意义,我们先不作了解。主要是因为我现在也不了解。



然后转到bin\下面,启动zookeeper。启动方法如下:shift+鼠标右键,然后打开命令窗口。然后在命令窗口中输入zkServer.cmd,回车就OK了。


wKiom1NnHyOgIiCuAAEM3vyB0U0681.jpg


接下来,用同样的方法再打开一个命令行窗口,执行命令: netstat ano 查看监听的端口(默认是2181)及地址,我电脑上的结果如下:可以看到地址是0.0.0.0:2181,而不是127.0.0.1:2181


wKiom1NnHy2jrb3lAAEgC8jjwBI615.jpg

三、客户端环境搭建


eclipse中创建新的java project,取名:zookeeper_learning,把项目转换成maven项目,然后在pom.xml中加入如下的dependency


<dependency>


<groupId>org.apache.zookeeper</groupId>


<artifactId>zookeeper</artifactId>


<version>3.4.5</version>


</dependency>


然后,创建Java类如下:


(代码参看http://blog.csdn.net/shenlan211314/article/details/6187037,略有修改)



package zookeeper_learning;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
publicclass ZkClient {
publicstaticvoid main(String[] args) {
try {
ZooKeeper zk=new ZooKeeper("0.0.0.0:2181", 3000, new Watcher(){
@Override
publicvoid process(WatchedEvent arg0) {
System.out.println("watch "+arg0);
}
});
System.out.println("/n1. 创建 ZooKeeper 节点 (znode : zoo2, 数据: myData2 ,权限: OPEN_ACL_UNSAFE ,节点类型: Persistent");
zk.create("/zoo2","myData2".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
System.out.println("/n2. 查看是否创建成功: ");
System.out.println(new String(zk.getData("/zoo2",false,null)));
System.out.println("/n3. 修改节点数据 ");
zk.setData("/zoo2", "shenlan211314".getBytes(), -1);
System.out.println("/n4. 查看是否修改成功: ");
System.out.println(new String(zk.getData("/zoo2", false, null)));
System.out.println("/n5. 删除节点 ");
zk.delete("/zoo2", -1);
System.out.println("/n6. 查看节点是否被删除: ");
System.out.println(" 节点状态: ["+zk.exists("/zoo2", false)+"]");
zk.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

执行结果如下则正常:


wKiom1NnH0rj3uK6AAE-VBdoV1k294.jpg

麻雀虽小,还是把Zookeeper对结点的简单操作演练了一遍.


没有更多推荐了,返回首页