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 ...
随机推荐
- 【探讨】javascript事件机制底层实现原理
前言 又到了扯淡时间了,我最近在思考javascript事件机制底层的实现,但是暂时没有勇气去看chrome源码,所以今天我来猜测一把 我们今天来猜一猜,探讨探讨,javascript底层事件机制是如 ...
- SAP打印机配置
SAP打印机配置 一.SAP打印原理 SAP的打印过程分两个步骤: 1.创建假脱机请求: 2.创建输出请求: 在点击打印按钮后,系统会提示创建假脱机请求后,你可以选择直接生成输出请求,或者手动生成输出 ...
- SharePoint 2013 Silverlight中使用Net客户端对象模型
1.创建Silverlight时,选择Silverlight 4,不要选择版本5,试了很久版本5都调用不了,自己也不知道什么原因,谷歌也没找到答案,后来尝试版本4,可以调用: 至于Host the S ...
- 操作系统开发系列—13.i.进程调度 ●
上面的三个进程都是延迟相同的时间,让我们修改一下,尝试让它们延迟不同的时间. void TestA() { int i = 0; while (1) { disp_str("A." ...
- Android Frameworks层介绍
Activity Manager用来管理应用程序生命周期并提供常用的导航回退功能. Window Manager提供一些我们访问手机屏幕的方法.屏幕的透明度.亮度.背景. Content Provid ...
- 【代码笔记】iOS-关于UIFont的一些define
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- cocoapods遇到的问题 (pod: command not found的问题)
在使用CocoaPod为项目添加第三方类库时,出现了-bash: pod: command not found的问题: 在网上看到了一位哥的方法:确实有效:
- jQuery.noConflict() 函数
jQuery.noConflict()函数用于让出jQuery库对变量$(和变量jQuery)的控制权. 一般情况下,在jQuery库中,变量$是变量jQuery的别名,它们之间是等价的,例如jQue ...
- 面试题整理:SQL(二)
1. 现有广告合同表Orders,表示广告在哪个广告位的哪几天需要播出 OrderID Positioncode Startdate Enddate 1 A 2015-11-01 2015-11-03 ...
- yii2 rbac权限控制详细操作步骤
作者:白狼 出处:http://www.manks.top/article/yii2_rbac_description本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 ...