zookeeper-笔记-命令

本文详细介绍了Zookeeper的启动与客户端使用,包括查看节点、创建节点和监听节点状态。同时,讲解了利用Zookeeper实现分布式锁的原理及步骤。此外,还阐述了Zookeeper集群的配置过程,包括配置文件、myid文件的设置以及启动多节点,并展示了节点间选举的领导者。最后,演示了客户端如何连接到多节点的Zookeeper集群。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、启动zk服务

其实就是启动了zookeeper服务端,只是开启了zookeeper一个节点,后面会介绍如何开启服务端多个节点

zkServer.sh start

二、启动完了之后,就可以通过客户端查看服务端的节点情况

1、启动zookeeper客户端 zkCli.sh
2、退出客户端:quit
3、查看当前服务端树形情况:ls -R /

客户端在服务端创建永久节点:create /app1
创建临时节点:create -e /lock

监听lock节点的状态:stat -w /lock
如果节点过期,会受到一个watchedEvent事件

三、使用zookeeper实现分布式锁:

原理:客户端1创建临时节点A,接着客户端2创建临时节点A,此时客户端2创建失败,客户端2监听节点A,等待释放,如果释放客户端2就会收到通知,然后客户端2在创建临时节点A,成功。

四、zookeeper实现master-worker

1、先创建 /workers节点(永久节点):create /workers

2、在创建master临时节点:create -e /master "m1:2223" —m1表示znode的值,2223表示端口号

3、master创建成功后,在监听/workers节点下面的变化:ls -w /workers

4、创建临时worker节点1:create -e /workers/w1 'w1:2224'

4、创建临时worker节点2:create -e /workers/w2 'w2:2224'

五、配置3个节点的zookeeper集群:

第一步:首先准备三个配置文件、每次启动指定配置文件,那么就会启动三个zookeeper节点。这个配置可以从conf目录下面copy文件zook.cfg。修改一下配置,大致内容如下

第一个是存放数据的路径,三个节点的数据路径不能一样 第二个是端口号,三个节点的端口号不能一样,我们可以2181、2182、2183依次递增。 第三个点是,配置集群内节点与节点直接的通讯,这个数据的三个配置文件都一样,3333表示 集群中节点与节点直接的通讯端口,3334表示leader选举的端口。

比如下图在quorum目录下面放置三个cfg文件

第二步:配置myid文件

dataDir=/Users/leileijiang/IdeaProjects/zookeeper/temp/zook1
前面我们配置了数据存放的路径,但是前提是我们要在这个目录下面放置myid文件

怎么放置myid文件呢,myid文件存什么内容呢
可以分别进入到zook1、zook2、zook3目录下面执行下面命令

echo "1" > myid

就会在zook1目录下面生成文件和设置内容,当如zook2目标下面要执行:echo "2" > myid 同理zook3目录下面执行:echo "3" > myid

第三步:上面配置文件都弄好了之后,开始启动三个zookeeper服务端的节点

进入配置文件所在目标执行:zkServer.sh start-foreground ./zoo-quorum-node1.cfg 启动第一个zookeeper节点,分别启动三个节点

启动日志:查看被选为leader的节点
节点1:FOLLOWING - LEADER ELECTION TOOK - 208542 MS
节点2:LEADING - LEADER ELECTION TOOK - 229 MS
节点3:FOLLOWING - LEADER ELECTION TOOK - 20 MS

节点2的日志:LEADING表示节点2成了leader节点
节点1和节点3的日志:FOLLOWING 表示成了follower节点

4、第四步:开启一个zookeeper客户端,执行:zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 表示客户端接入zookeeper服务的端口和每个节点的配置。

客户端启动日志:
Session establishment complete on server localhost/127.0.0.1:2181, session id = 0x100027c85860000, negotiated timeout = 30000

表示和2181建立了连接

断开2181节点,此时客户端又会重行连接zookeeper服务节点

Session establishment complete on server localhost/127.0.0.1:2182, session id = 0x200027c85970000, negotiated timeout = 30000

表示和2182建立了连接
// cluster1 上 将zookeeper 解压到/usr/local 目录下,配置环境变量 # vi /etc/profile // 添加以下内容 export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6 export PATH=$ZOOKEEPER_HOME/bin:$PATH # cd /usr/local/zookeeper-3.4.6 // 在 conf 中新建zoo.cfg 文件 # vi conf/zoo.cfg // 输入以下内容 # 客户端心跳时间(毫秒) tickTime=2000 # 允许心跳间隔的最大时间 initLimit=10 # 同步时限 syncLimit=5 # 数据存储目录 dataDir=/home/hadoop_files/hadoop_data/zookeeper # 数据日志存储目录 dataLogDir=/home/hadoop_files/hadoop_logs/zookeeper/dataLog # 端口号 clientPort=2181 # 集群节点和服务端口配置 server.1=cluster1:2888:3888 server.2=cluster2:2888:3888 server.3=cluster3:2888:3888 // 创建 zookeeper 的数据存储目录和日志存储目录 14 大数据技术课程笔记本虚拟机搭建Hadoop集群操作文档 # mkdir -p /home/hadoop_files/hadoop_data/zookeeper # mkdir -p /home/hadoop_files/hadoop_logs/zookeeper/dataLog # mkdir -p /home/hadoop_files/hadoop_logs/zookeeper/logs // 修改文件夹的权限 # chown -R hadoop:hadoop /home/hadoop_files # chown -R hadoop:hadoop /usr/local/zookeeper-3.4.6 // 在 cluster1 号服务器的 data 目录中创建一个文件myid,输入内容为1 // myid 应与zoo.cfg 中的集群节点相匹配 # echo "1" >> /home/hadoop_files/hadoop_data/zookeeper/myid // 修改 zookeeper 的日志输出路径(注意CDH版与原生版配置文件不同) # vi bin/zkEnv.sh // 将配置文件里面的以下项替换为红字的内容 if [ "x${ZOO_LOG_DIR}" = "x" ] then ZOO_LOG_DIR="/home/hadoop_files/hadoop_logs/zookeeper/logs" fi if [ "x${ZOO_LOG4J_PROP}" = "x" ] then ZOO_LOG4J_PROP="INFO,ROLLINGFILE" fi // 修改 zookeeper 的日志配置文件 # vi conf/log4j.properties // 修改为以下内容: zookeeper.root.logger=INFO,ROLLINGFILE log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender 将这个zookeeper-3.4.6 的目录复制到其他的两个节点上 # scp -r /usr/local/zookeeper-3.4.6 cluster2:/usr/local/ # scp -r /usr/local/zookeeper-3.4.6 cluster3:/usr/local/ // 退回 hadoop 用户 # exit // 刷新环境变量 $ source /etc/profile 完成了这些操作,启动时出现了JMX enabled by default Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg Starting zookeeper ... /usr/local/zookeeper-3.4.6/bin/zkServer.sh: line 113: /home/hadoop_er.pid: Permission denied FAILED TO WRITE PID
最新发布
03-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信仰_273993243

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值