栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

二、Zookeeper单机模式安装

二、Zookeeper单机模式安装

1、下载地址

官网首页:Apache ZooKeeper

2、单机模式安装 2.1、安装前准备
    安装JDK拷贝Zookeeper安装包apache-zookeeper-3.6.3-bin.tar.gz到Linux机器上面解压到/opt/zookeeper/目录:
tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz -C /opt/zookeeper/
2.2、修改配置

将/opt/zookeeper/apache-zookeeper-3.6.3-bin/conf这个路径下的 zoo_sample.cfg 修改为 zoo.cfg

[root@VM-20-13-centos conf]# mv zoo_sample.cfg zoo.cfg

打开 zoo.cfg 文件,修改 dataDir 路径:

[root@VM-20-13-centos conf]# vim zoo.cfg

修改如下内容:

dataDir=/opt/zookeeper/apache-zookeeper-3.6.3-bin/zkData

在/opt/zookeeper/apache-zookeeper-3.6.3-bin/这个目录上创建 zkData 文件夹

[root@VM-20-13-centos apache-zookeeper-3.6.3-bin]# mkdir zkData
3、操作Zookeeper 3.1、启动Zookeeper服务端
[root@VM-20-13-centos bin]# ./zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@VM-20-13-centos bin]# jps
8272 QuorumPeerMain
8363 Jps
[root@VM-20-13-centos bin]# ./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone
[root@VM-20-13-centos bin]# 
3.2、启动Zookeeper客户端
[root@VM-20-13-centos apache-zookeeper-3.6.3-bin]# bin/zkCli.sh
3.3、退出客户端
[zk: localhost:2181(CONNECTED) 0] quit
3.4、停止Zookeeper服务端
[root@VM-20-13-centos bin]# ./zkServer.sh stop
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
[root@VM-20-13-centos bin]# jps
9127 Jps
[root@VM-20-13-centos bin]
4、配置参数解析

Zookeeper中的配置文件zoo.cfg中参数含义解读如下:

4.1. tickTime =2000:  Zookeeper 服务端与客户端心跳时间

Zookeeper使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳, 时间单位为毫秒。它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间。 (session的最小超时时间是2*tickTime)

4.2. initLimit =10: Leader与Follower 初始通信时限

集群中的Follower与Leader之间初始连接时能容忍的最多心跳数(tickTime的数量),用它来限定集群中的Zookeeper服务器连接到Leader的时限。

4.3. syncLimit =5: Leader与Follower同步通信时限

集群初始化完成后,Leader与Follower之间的最大响应时间单位,假如响应超过syncLimit * tickTime, Leader认为Follwer死掉,从服务器列表中删除Follwer。

4.4. dataDir:数据文件目录+数据持久化路径

主要用于保存 Zookeeper 中的数据。

4.5. clientPort =2181:客户端连接端口

监听客户端连接的端口。

5、客户端命令行操作

使用help命令查看支持的操作

[zk: localhost:2181(CONNECTED) 26] help
ZooKeeper -server host:port -client-configuration properties-file cmd args
        addWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTENT_RECURSIVE] - default is PERSISTENT_RECURSIVE
        addauth scheme auth
        close
        config [-c] [-w] [-s]
        connect host:port
        create [-s] [-e] [-c] [-t ttl] path [data] [acl]
        delete [-v version] path
        deleteall path [-b batch size]
        delquota [-n|-b] path
        get [-s] [-w] path
        getAcl [-s] path
        getAllChildrenNumber path
        getEphemerals path
        history
        listquota path
        ls [-s] [-w] [-R] path
        printwatches on|off
        quit
        reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]
        redo cmdno
        removewatches path [-c|-d|-a] [-l]
        set [-s] [-v version] path data
        setAcl [-s] [-v version] [-R] path acl
        setquota -n|-b val path
        stat [-w] path
        sync path
        version
Command not found: Command not found help
[zk: localhost:2181(CONNECTED) 27]

个人理解:

Zookeeper中的Znode就是一个路径,Znode的子节点就是这个路径下的子目录,Znode的父节点就是这个路径的父目录。

同时Zookeeper中的一个Znode也是一个Key,Key的值就是这个Znode对应的路径,对应的可以为这个Key设置一个Value,也就是这个Znode的值,Value可以不设置,默认为null。

[zk: localhost:2181(CONNECTED) 27] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 28] create /node1
Created /node1
[zk: localhost:2181(CONNECTED) 29] ls /
[node1, zookeeper]
[zk: localhost:2181(CONNECTED) 30] ls /node1
[]
[zk: localhost:2181(CONNECTED) 31] get node1
Path must start with / character
[zk: localhost:2181(CONNECTED) 32] get /node1
null
[zk: localhost:2181(CONNECTED) 33] set /node1 "node1-value"
[zk: localhost:2181(CONNECTED) 34] get /node1
node1-value
[zk: localhost:2181(CONNECTED) 35] ls /
[node1, zookeeper]
[zk: localhost:2181(CONNECTED) 36] ls /node1
[]
[zk: localhost:2181(CONNECTED) 37]

 测试临时节点,客户端退出后再重新连接,临时节点已被删除

[zk: localhost:2181(CONNECTED) 7] create -e /temp-node
Created /temp-node
[zk: localhost:2181(CONNECTED) 8] ls /
[temp-node, zookeeper]
[zk: localhost:2181(CONNECTED) 9] quit
WATCHER::
WatchedEvent state:Closed type:None path:null
2022-02-13 22:15:38,695 [myid:] - INFO  [main:ZooKeeper@1619] - Session: 0x101b5fd62a60001 closed
2022-02-13 22:15:38,699 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@578] - EventThread shut down for session: 0x101b5fd62a60001
2022-02-13 22:15:38,700 [myid:] - ERROR [main:ServiceUtils@42] - Exiting JVM with code 0
[root@VM-20-13-centos apache-zookeeper-3.6.3-bin]# bin/zkCli.sh
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 1]

测试带序号的节点

[zk: localhost:2181(CONNECTED) 2] create -s /node
Created /node0000000004
[zk: localhost:2181(CONNECTED) 3] ls /
[node0000000004, zookeeper]
[zk: localhost:2181(CONNECTED) 4] create -s /node
Created /node0000000005
[zk: localhost:2181(CONNECTED) 5] create -s /new-node
Created /new-node0000000006
[zk: localhost:2181(CONNECTED) 6] ls /
[new-node0000000006, node0000000004, node0000000005, zookeeper]
[zk: localhost:2181(CONNECTED) 7]

测试监听节点值变化

在客户端1上面创建一个节点

[zk: localhost:2181(CONNECTED) 12] create /node1
Created /node1
[zk: localhost:2181(CONNECTED) 13] ls /node1
[]
[zk: localhost:2181(CONNECTED) 14] ls /
[node1, zookeeper]
[zk: localhost:2181(CONNECTED) 15]

在客户端2上面监听此节点

[zk: localhost:2181(CONNECTED) 2] ls /
[node1, zookeeper]
[zk: localhost:2181(CONNECTED) 3] get -w /node1
null
[zk: localhost:2181(CONNECTED) 4]

在客户端1上面改变节点的值

[zk: localhost:2181(CONNECTED) 16] set /node1 "value1"

客户端2上面监听到变化

[zk: localhost:2181(CONNECTED) 4]
WATCHER::

WatchedEvent state:SyncConnected type:NodeDataChanged path:/node1

测试监听节点的子节点变化

在客户端1上面创建一个节点

[zk: localhost:2181(CONNECTED) 18] ls /
[node1, zookeeper]

在客户端2上面监听这个节点的子节点变化情况

[zk: localhost:2181(CONNECTED) 0] ls /
[node1, zookeeper]
[zk: localhost:2181(CONNECTED) 1] ls -w /node1
[]

在客户端1上面创建一个子节点

[zk: localhost:2181(CONNECTED) 19] create /node1/subnode
Created /node1/subnode
[zk: localhost:2181(CONNECTED) 20]

在客户端2上面监听到子节点变化事件

[zk: localhost:2181(CONNECTED) 2]
WATCHER::

WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/node1
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/734051.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号