我报名参加了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/zookeeper/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/zookeeper
scp -r zookeeper node003:/usr/local/program/zookeeper
复制代码
修改分布式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/zookeeper/bin/../conf/zoo.cfg
启动 zookeeper ... 开始
[[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # bin/zkServer.sh 启动
ZooKeeper JMX 默认启用
使用配置:/usr/local/program/zookeeper/bin/../conf/zoo.cfg
启动 zookeeper ... 开始
[[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # bin/zkServer.sh 启动
ZooKeeper JMX 默认启用
使用配置:/usr/local/program/zookeeper/bin/../conf/zoo.cfg
启动 zookeeper ... 开始
复制代码
查看集群状态
[[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # bin/zkServer.sh 状态
ZooKeeper JMX 默认启用
使用配置:/usr/local/program/zookeeper/bin/../conf/zoo.cfg
发现客户端端口:2181。客户端地址:localhost。客户端 SSL:错误。
模式:领导者
[[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # bin/zkServer.sh 状态
ZooKeeper JMX 默认启用
使用配置:/usr/local/program/zookeeper/bin/../conf/zoo.cfg
发现客户端端口:2181。客户端地址:localhost。客户端 SSL:错误。
模式:追随者
[[ [电子邮件保护]](/cdn-cgi/l/email-protection) zookeeper] # bin/zkServer.sh 状态
ZooKeeper JMX 默认启用
使用配置:/usr/local/program/zookeeper/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 版权协议,转载请附上原文出处链接和本声明