>

需要开启Zookeeper

- 编辑:新浦京澳门赌 -

需要开启Zookeeper

一,下载Zookeeper安装包

从官网下载牢固版安装包后,解压。

图片 1

其中ZK_需要开启Zookeeper。HOME 为:D:Program Fileszookeeper-3.4.9

 

需要开启Zookeeper。二,启动Zookeeper Server

是因为在Eclipse里面写的次序是Client,需求连接到Zookeeper Server。因而,必要敞开Zookeeper Server。在Windows下,运转ZK_需要开启Zookeeper。HOME/bin/zkServer.cmd 就能够运维Zookeeper Server

哪些运行报错提醒找不到zoo.cfg,那是因为官方网址提供的是 ZK_HOME/conf/zoo_需要开启Zookeeper。sample.cfg,复制一份重命名就可以。

图片 2

在Windows情状下,要求留神的是安顿 dataDir 参数的值。它默许是在 ZK_需要开启Zookeeper。HOME/bin/目录下。能够把它配备为另外目录,比如:

图片 3

意味着将dataDir钦定为其转为目录的父目录下的 dataDir文件夹下(D:Program Fileszookeeper-3.4.9dataDir)

 

在cmd命令行运营Zookeeper Server:  >zkServer.cmd

图片 4

 

当有新的Client连接受Server后,就该cmd窗口就能够输出一些新的剧情,如下:

图片 5

 

三,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:workspaceeclipse-workspacezookeeper
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服务,进而在单机上模仿一个三节点集群。

图片 6

 

参照:《Zookeeper分布式过程协同手艺详解》

本文由单机电脑游戏排行榜发布,转载请注明来源:需要开启Zookeeper