我报名参加了Goldstone Project Phase 1 Challenge——瓜分100,000奖池,这是我的……

我报名了Goldstone Project Phase 1 Challenge——瓜分100,000奖池,这是我的第10篇文章, 点击查看活动详情

Windows环境下安装

下载并安装

1.访问地址: https://zookeeper.apache.org/releases.html#download 下载所需的ZK版本,下载到本地并解压。

2.在解压目录下新建一个空的data文件夹和log文件夹

在这里插入图片描述

配置

复制conf目录下的zoo_sample.cfg文件,重命名为zoo.cfg

在这里插入图片描述

修改zoo.cfg配置文件,将dataDir=/tmp/zookeeper改为zookeeper安装目录所在的data文件夹,并添加配置添加数据日志

 # 每个tick的毫秒数  
 滴答时间= 2000  
 # 初始的刻度数  
 # 同步阶段可以采取  
 初始化限制= 10  
 # 之间可以通过的刻度数  
 # 发送请求并获得确认  
 同步限制 = 5  
 # 存储快照的目录。  
 # 不要使用 /tmp 进行存储,这里的 /tmp 只是  
 # 示例清酒。  
 dataDir=D:\Development\apache-zookeeper- 3.6 .3-bin\data  
 dataLogDir=D:\Development\apache-zookeeper- 3.6 .3-bin\log  
 # 客户端连接的端口  
 客户端端口 = 2181  
 # 最大客户端连接数。  
 # 如果您需要处理更多客户,请增加此值  
 #maxClientCnxns= 60  
 #  
 # 请务必阅读维护部分  
 # 打开自动清除之前的管理员指南。  
 #  
 # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance  
 #  
 # 在dataDir中保留的快照数量  
 #autopurge.snapRetainCount= 3  
 # 以小时为单位清除任务间隔  
 # 设置为“0”以禁用自动清除功能  
 #autopurge.purgeInterval= 1  
  
 ## 指标提供者  
 #  
 # https://prometheus.io 指标导出器  
 #metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider  
 #metricsProvider.httpPort= 7000  
 #metricsProvider.exportJvmInfo=true  
 复制代码

启动

双击bin目录下的zkServer.cmd启动

在这里插入图片描述

新版zookeeper内置管理控制台,通过jetty启动,会占用8080端口

在这里插入图片描述

解决方案

1.修改端口

 在zoo.cfg中增加 admin.serverPort=没有被占用的端口号  
 复制代码 admin.serverPort=8088  
 复制代码

2.修改启动脚本

 在启动脚本中增加" -Dzookeeper.admin.enableServer= false " copy code “-Dzookeeper.admin.enableServer=false”  
 复制代码

Linux环境下安装

下载并安装

地址: zookeeper.apache.org/releases.ht…

 wget https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz  
 复制代码

解压动物园管理员

 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) conf] # tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz  
 复制代码

改名

 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) conf] # mv tar -zxvf apache-zookeeper-3.7.0-bin zookeeper  
 复制代码

移动 zookeeper 位置

 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) conf] # cp zookeeper /usr/local/  
 复制代码

配置

修改 zoo_sample.cfg 文件

 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) conf] # cd /usr/local/zookeeper/conf  
 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) conf] # mv zoo_sample.cfg zoo.cfg  
 复制代码

修改dataDir目录为真正的输出目录

 # 每个tick的毫秒数  
 # 基本事件单元,以毫秒为单位。它用来控制心跳和超时,默认情况下最小的会话超时时间为两个心跳时间  
 滴答时间= 2000  
 # 初始的刻度数  
 # 同步阶段可以采取  
 # 用于限制follower跟随者服务器必须连接到leader领导者服务器的时限  
 # 多少个心跳时间内,允许其他server连接并初始化数据,如果ZooKeeper管理的数据较大,则应相应增大这个值  
 # 它以tickTime的倍数来表示。当超过设置倍数的tickTime时间,则连接失败  
 初始化限制= 10  
 # 之间可以通过的刻度数  
 # 发送请求并获得确认  
 # leader与follower之间发送消息,请求和应答时间长度。  
 # 如果follower在设置的时间内不能与leader进行通信,那么此follower将被丢弃。  
 同步限制 = 5  
 # 存储快照的目录。  
 # 不要使用 /tmp 进行存储,这里的 /tmp 只是  
 # 示例清酒。  
 #dataDir=/tmp/动物园管理员  
 #存储内存数据库快照的位置  
 dataDir=/usr/local/zookeeper/数据  
 # 客户端连接的端口  
 # 监听客户端连接的端口,默认是 2181  
 客户端端口 = 2181  
 # 最大客户端连接数。  
 # 如果您需要处理更多客户,请增加此值  
 #maxClientCnxns= 60  
 #  
 # 请务必阅读维护部分  
 # 打开自动清除之前的管理员指南。  
 #  
 # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance  
 #  
 # 在dataDir中保留的快照数量  
 #autopurge.snapRetainCount= 3  
 # 以小时为单位清除任务间隔  
 # 设置为“0”以禁用自动清除功能  
 #autopurge.purgeInterval= 1  
  
 ## 指标提供者  
 #  
 # https://prometheus.io 指标导出器  
 #metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider  
 #metricsProvider.httpPort= 7000  
 #metricsProvider.exportJvmInfo=true  
 复制代码

创建数据目录

 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) conf] # cd /usr/local/zookeeper/  
 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # mkdir 数据  
 复制代码

启动

注意:zookeeper需要依赖jdk环境

 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) bin] # cd /usr/local/zookeeper/bin  
 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) bin] # ./zkServer.sh 启动  
 /usr/bin/java  
 ZooKeeper JMX 默认启用  
 使用配置:/usr/local/zookeeper/bin/../conf/zoo.cfg  
 启动 zookeeper ... 开始  
 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) 垃圾桶] #  
 复制代码

查看启动状态

 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) bin] # ./zkServer.sh 状态  
 /usr/bin/java  
 ZooKeeper JMX 默认启用  
 使用配置:/usr/local/zookeeper/bin/../conf/zoo.cfg  
 发现客户端端口:2181。客户端地址:localhost。客户端 SSL:错误。  
 模式:独立  
 复制代码

停止

 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) bin] # ./zkServer.sh 停止  
 复制代码

测试

 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) bin] # ./zkCli.sh -server 127.0.0.1:2181  
  
 [zk:127.0.0.1:2181(已连接)8] ls  
 ls [-s] [-w] [-R] 路径  
 复制代码

退出客户端

 [zk: 127.0.0.1:2181(CONNECTED) 0] 退出  
 复制代码

搭建 Zookeeper 集群环境

搭建 Zookeeper 集群至少需要三台服务器,并且服务器之间的系统时间是一致的。三台服务器1个leader和2个follower

下载并安装

 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # wget https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz  
 复制代码

解压并重命名

 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz  
  
 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # mv apache-zookeeper-3.7.0-bin zookeeper  
 复制代码

配置

创建数据目录

 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # cd zookeeper  
  
 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # mkdir 数据  
 复制代码

创建一个myid文件,填写每个节点的编号(node001 ==> 1),必须是唯一的。

 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # cd 数据  
 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # vim myid  
  
 1  
 复制代码

配置 zoo.cfg

 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # cd conf/  
  
 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # mv zoo_sample.cfg zoo.cfg  
  
 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # vim zoo.cfg  
 复制代码 # 每个tick的毫秒数  
 #心跳时间  
 滴答时间=2000  
 # 初始的刻度数  
 # 同步阶段可以采取  
 # 用于限制follower服务器必须连接到leaderleader服务器的时间段  
 # 允许其他服务器连接和初始化数据的心跳次数。如果 ZooKeeper 管理的数据很大,这个值应该相应增加  
 初始化限制=10  
 # 之间可以通过的刻度数  
 # 发送请求并获得确认  
 # 集群中leader和follower之间的最大响应时间单位  
 # 允许follower同步多少tickTimes,如果follower落后太远,会被丢弃。  
 同步限制=5  
 # 存储快照的目录。  
 # 不要使用 /tmp 进行存储,这里的 /tmp 只是  
 # 示例清酒。  
 # 修改数据存储路径  
 # 内存数据库快照的存储位置  
 dataDir=/usr/local/program/z​​ookeeper/data  
 # 客户端连接的端口  
 # 用于监听客户端连接的端口  
 客户端端口=2181  
 # 最大客户端连接数。  
 # 如果您需要处理更多客户,请增加此值  
 #maxClientCnxns=60  
 #  
 # 请务必阅读维护部分  
 # 打开自动清除之前的管理员指南。  
 #  
 # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance  
 #  
 # 在dataDir中保留的快照数量  
 #autopurge.snapRetainCount=3  
 # 以小时为单位清除任务间隔  
 # 设置为“0”以禁用自动清除功能  
 #autopurge.purgeInterval=1  
  
 ## 指标提供者  
 #  
 # https://prometheus.io 指标导出器  
 #metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider  
 #metricsProvider.httpPort=7000  
 #metricsProvider.exportJvmInfo=true  
  
 #3 服务器的地址  
 # 服务器.A=B:C:D  
 # 添加集群配置  
 server.1=node001:2888:3888  
 server.2=node002:2888:3888  
 server.3=node003:2888:3888  
 复制代码 A :一个数字,表示是第几号服务器  
  
 B:服务器的地址  
  
 C:服务器Follower与集群中的Leader服务器交换信息的端口  
  
 D:万一集群中的Leader服务器挂了,需要一个端口来重新进行选举一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。  
 复制代码

分发到其他节点

 scp -r zookeeper node002:/usr/local/program/z​​ookeeper  
  
 scp -r zookeeper node003:/usr/local/program/z​​ookeeper  
 复制代码

修改分布式Zookeeper机器的myid号,分别为2、3

 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # vim 数据/myid  
 2  
  
 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # vim 数据/myid  
 3  
 复制代码

启动集群

 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # bin/zkServer.sh 启动  
 ZooKeeper JMX 默认启用  
 使用配置:/usr/local/program/z​​ookeeper/bin/../conf/zoo.cfg  
 启动 zookeeper ... 开始  
  
 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # bin/zkServer.sh 启动  
 ZooKeeper JMX 默认启用  
 使用配置:/usr/local/program/z​​ookeeper/bin/../conf/zoo.cfg  
 启动 zookeeper ... 开始  
  
  
 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # bin/zkServer.sh 启动  
 ZooKeeper JMX 默认启用  
 使用配置:/usr/local/program/z​​ookeeper/bin/../conf/zoo.cfg  
 启动 zookeeper ... 开始  
 复制代码

查看集群状态

 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # bin/zkServer.sh 状态  
 ZooKeeper JMX 默认启用  
 使用配置:/usr/local/program/z​​ookeeper/bin/../conf/zoo.cfg  
 发现客户端端口:2181。客户端地址:localhost。客户端 SSL:错误。  
 模式:领导者  
  
 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # bin/zkServer.sh 状态  
 ZooKeeper JMX 默认启用  
 使用配置:/usr/local/program/z​​ookeeper/bin/../conf/zoo.cfg  
 发现客户端端口:2181。客户端地址:localhost。客户端 SSL:错误。  
 模式:追随者  
  
 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # bin/zkServer.sh 状态  
 ZooKeeper JMX 默认启用  
 使用配置:/usr/local/program/z​​ookeeper/bin/../conf/zoo.cfg  
 发现客户端端口:2181。客户端地址:localhost。客户端 SSL:错误。  
 模式:追随者  
 复制代码

查看进度

 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) hadoop] # jps  
 18946 QuorumPeerMain  
 19675 日元  
  
 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) hadoop] # jps  
 21860 QuorumPeerMain  
 22095 日元  
  
 [[ [电子邮件保护]](/cdn-cgi/l/email-protection) hadoop] # jps  
 25607 日元  
 25547 日志节点  
 复制代码

常用命令

零知识操作

命令效果 zkServer.sh start/stop start/stop service zkCli.sh start/stop start/stop client zkServer.sh status 查看状态(leader/follower) bin/zkCli.sh 连接本机 zkCli.sh -server node001:2181连接其他zk服务器 status /zk 查看/zk节点的状态信息

创建节点 ZNode

命令效果 create /zk mydata 创建znode节点,永久+无序列号 create -e /zk mydata 创建临时znode create -s /zk mydata 创建顺序znode节点 create -e -s /zk mydata 创建临时顺序znode

节点ZNode的查询

命令效果 ls /zk 查看znode子节点列表 ls /zk watch 为节点的子节点变化事件注册监听 get /zk 获取znode数据 get /zk watch 为节点的数据内容变化事件注册监听

节点ZNode的修改和删除

命令效果 set /zk value set znode data delete /zk 只能删除没有子znode的znode rmr/zk 删除znode的znode,递归删除

数据信息字段

znode数据信息字段说明

 cZxid =  0x1000fe0597c0002 节点创建的时候的zxid  
 # 导致创建此 znode 的更改的 zxid。  
  
 ctime = Fri Dec  02  16: 41: 50 PST  2022 节点创建的时间  
 # 从创建这个 znode 的纪元开始的时间,以毫秒为单位。  
  
 mZxid =  0x1000fe0597c0002 节点修改的时候的zxid,与子节点的修改无关  
 # 上次修改这个 znode 的变更的 zxid。  
  
 mtime = Fri Dec  02  16: 41: 50 PST  2022 节点的修改的时间  
 # 上次修改此 znode 的时间(以毫秒为单位)。  
  
 pZxid =  0x1000fe0597c0002 和子节点的创建/删除对应的zxid,和修改无关,和孙子节点无关  
 # 最后修改此 znode 子节点的更改的 zxid。  
  
 cversion =  0 子节点的更新次数  
 # 这个znode子节点的变化次数。  
  
 dataVersion =  0 节点数据的更新次数  
 # 这个znode的数据变化的次数。  
  
 aclVersion =  0 节点(ACL)的更新次数  
 # 这个znode的ACL的修改次数。  
  
 ephemeralOwner =  0x0 如果该节点为ephemeral节点, ephemeralOwner值表示与该节点绑定的  
 session id. 如果该节点不是ephemeral节点, ephemeralOwner值为 0  
 # 如果 znode 是临时节点,则该 znode 所有者的会话 id。  
 如果它不是临时节点,它将为零。  
  
 dataLength =  6 节点数据的字节数  
 # 这个znode的数据字段的长度。  
  
 numChildren =  0 子节点个数,不包含孙子节点  
 # 这个znode的子节点数。  
 复制代码

版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议。转载请附上原文出处链接和本声明。

这篇文章的链接: https://homecpp.art/0020/9521/1013

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/38156/56562011

posted @ 2022-09-20 11:57  哈哈哈来了啊啊啊  阅读(17)  评论(0编辑  收藏  举报