zookeeper Eclipse 开发环境搭建及简单示例
一,下载Zookeeper安装包
从官方网站下载稳定版安装包后,解压。

其中ZK_HOME 为:D:\Program Files\zookeeper-3.4.9
二,启动Zookeeper Server
由于在Eclipse里面写的程序是Client,需要连接到Zookeeper Server。因此,需要开启Zookeeper Server。在Windows下,运行ZK_HOME/bin/zkServer.cmd 即可启动Zookeeper Server
如何启动报错提示找不到zoo.cfg,这是因为官网提供的是 ZK_HOME/conf/zoo_sample.cfg,复制一份重命名即可。

在Windows环境下,需要注意的是配置 dataDir 参数的值。它默认是在 ZK_HOME/bin/目录下。可以把它配置为其他目录,比如:

表示将dataDir指定为其转为目录的父目录下的 dataDir文件夹下(D:\Program Files\zookeeper-3.4.9\dataDir)
在cmd命令行启动Zookeeper Server: >zkServer.cmd

当有新的Client连接到Server后,就该cmd窗口就会输出一些新的内容,如下:

三,Eclipse开发环境配置
新建一个Maven工程,添加:
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.9</version>
新建一个Class,源代码如下:
import java.io.IOException; import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper; public class Master implements Watcher{ ZooKeeper zk;
String hostPort; public Master(String hostPort) {
this.hostPort = hostPort;
} void startZK() throws IOException{
zk = new ZooKeeper(hostPort, 15000, this);
} @Override
public void process(WatchedEvent event) {
System.out.println(event);
} public static void main(String[] args) throws Exception{
String add = "localhost:2181";
Master m = new Master(add);
m.startZK();
Thread.sleep(60000);
}
}
Master.java的功能只是简单地建立一个Zookeeper 会话。
运行这个类,Eclipse控制台输出:
2016-10-20 20:59:06,068 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=E:\workspace\eclipse-workspace\zookeeper
2016-10-20 20:59:06,068 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=localhost:2181 sessionTimeout=15000 watcher=zookeeper.Master@62f6fb59
2016-10-20 20:59:06,114 [myid:] - INFO [main-SendThread(0:0:0:0:0:0:0:1:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server 0:0:0:0:0:0:0:1/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error)
2016-10-20 20:59:06,114 [myid:] - INFO [main-SendThread(0:0:0:0:0:0:0:1:2181):ClientCnxn$SendThread@876] - Socket connection established to 0:0:0:0:0:0:0:1/0:0:0:0:0:0:0:1:2181, initiating session
2016-10-20 20:59:06,177 [myid:] - INFO [main-SendThread(0:0:0:0:0:0:0:1:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server 0:0:0:0:0:0:0:1/0:0:0:0:0:0:0:1:2181, sessionid = 0x157e226a4790000, negotiated timeout = 15000
WatchedEvent state:SyncConnected type:None path:null
表明,测试连接成功。
如果运行时报错:
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
表明你的配置文件没有添加到classpath下。只需要将ZK_HOME/conf/log4j.properties 放到工程的src目录下即可。
四,在单机中模拟Zookeeper集群
Zookeeper只需要添加若干配置文件,就可以在一台电脑上运行多个Zookeeper服务端,从而模拟Zookeeper集群。它是通过在一台电脑上运行多个进程,每个进程单独代表一个Zookeeper服务器,从而组成Zookeeper集群的。
具体配置如下:
Zookeeper默认的配置文件是zoo_sample.cfg ,将该配置文件复制三份:
cp zoo_sample.cfg zoo.cfg zoo1.cfg zoo2.cfg
然后修改以下几个参数:①dataDir ②clientPort ③添加 server.n=ip:仲裁通信端口号:Leader选举端口号
比如,这三个配置文件中的相应参数分别如下:
zoo.cfg
dataDir=/home/xxx/dataDir
clientPort=2181
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445 zoo2.cfg
dataDir=/home/xxx/dataDir2
clientPort=2182
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445 zoo3.cfg
dataDir=/home/xxx/dataDir3
clientPort=2183
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
另外,在dataDir指定的目录下,创建一个myid文本文件,用来标识Zookeeper服务器的ID信息。
echo 1 > $dataDir/myid
echo 2 > $dataDir2/myid
echo 3 > $dataDir3/myid
使用相应的配置文件来启动Zookeeper服务。如下图,一共启动了三个Zookeeper服务,从而在单机上模拟一个三节点集群。

参考:《Zookeeper分布式过程协同技术详解》
zookeeper Eclipse 开发环境搭建及简单示例的更多相关文章
- 大数据应用之Windows平台Hbase客户端Eclipse开发环境搭建
大数据应用之Windows平台Hbase客户端Eclipse开发环境搭建 大数据应用之Windows平台Hbase客户端Eclipse环境搭建-Java版 作者:张子良 版权所有,转载请注明出处 引子 ...
- android Jni NDK开发环境搭建及其简单实例的编写
android Jni NDK开发环境搭建及其简单实例的编写 由于工作需要,需要采用开发想要的JNI,由于之前没有接触过安卓的开发,所以更加网上的帖子,学习了下.遇到了些问题,然后总结下学习过程中 ...
- [转]MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)
MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题) 网上有一篇shangdong_chu网友写的文章介绍如何在Eclipse上配置M ...
- Zookeeper项目开发环境搭建(Eclipse\MyEclipse + Maven)
写在前面的话 可详细参考,一定得去看 HBase 开发环境搭建(Eclipse\MyEclipse + Maven) 我这里,相信,能看此博客的朋友,想必是有一定基础的了.我前期写了大量的基础性博文. ...
- Hadoop Eclipse开发环境搭建
This document is from my evernote, when I was still at baidu, I have a complete hadoop developme ...
- libgdx for eclipse开发环境搭建
1.安装jdk1.7以上 2.下载libgdx1.2.0 下载地址:https://libgdx.badlogicgames.com/releases 3.下载项目创建工具(老版本的) 下载地址:ht ...
- (转)Hadoop Eclipse开发环境搭建
来源:http://www.cnblogs.com/justinzhang/p/4261851.html This document is from my evernote, when I was s ...
- Hadoop伪分布配置与基于Eclipse开发环境搭建
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- robot framework环境搭建和简单示例
环境搭建 因为我的本机已经安装了python.selenium.pip等,所以还需安装以下程序 1.安装wxPythonhttp://downloads.sourceforge.net/wxpytho ...
随机推荐
- SVG Drawing Animation - SVG 绘制动画
一个小实验,探索 SVG 线图动画的使用情况,以前沿的展示形式呈现图形或网站元素的外观,模拟它们的加载.SVG 真的很强大,有许多创造性和可能性,使用 SVG 可以制作各种有趣的网站交互效果.今天这篇 ...
- JavaScript 经典实例收集整理
跨浏览器添加事件 //跨浏览器添加事件 function addEvent(obj,type,fn){ if(obj.addEventListener){ obj.addEventListener(t ...
- 一次简单的分析手机APK病毒木马
写个笔记记录一下,起因是朋友在QQ上发了个连接叫我看看 安不安全,叫我帮他看看,反正在店里待着也没生意,那就顺便看看咯. 打开这个网址 会自动弹出下载一个名为OOXX的APK安装包. 起先我的思路是 ...
- JavaScript学习01 语言简介、基本使用和变量声明
JavaScript语言简介.基本使用和变量声明 JavaScript是网景(Netscape)公司开发的一种基于客户端浏览器.面向对象.事件驱动式的网页脚本语言. JavaScript的前身叫Liv ...
- JNI在C 和 C++ 函数实现的不同
在C中,JNI 函数调用由“(*env)->”作前缀,目的是为了取出函数指针所引用的值. 在 C++ 中,JNIEnv 类拥有处理函数指针查找的内联成员函数. 下面这两行代码访问同一函数,但每种 ...
- 【代码笔记】iOS-禁止输入表情符号
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- 免费开发者证书真机调试App ID失效问题:"Unable to add App ID because the '10' App ID limit in '7' days has been exceeded."解决方案(5月5号)
免费开发者证书真机调试App ID失效问题:"Unable to add App ID because the '10' App ID limit in '7' days has been ...
- 源码编译安装gcc-5.3.0
系统环境:Amazon Linux AMI 2015.09.2 (HVM)---Fedora 23 Server 1.下载gcc-5.3.0安装包并将gcc-5.3.0.tar.gz放到/opt目录下 ...
- php示例代码之empty函数
1 2 3 4 5 6 7 8 9 10 11 <?php $testVar=0; if(empty($testVar)) { echo 'msg:true'; } ...
- MapReduce二次排序
默认情况下,Map 输出的结果会对 Key 进行默认的排序,但是有时候需要对 Key 排序的同时再对 Value 进行排序,这时候就要用到二次排序了.下面让我们来介绍一下什么是二次排序. 二次排序原理 ...