我也只是个初学者,写这篇博客是做记录用的,方便以后自己再次用到的时候不会忘记。其中也借鉴了一些其他大佬的文章进行实践,如果有写的不好的地方也可以评论区指出,请各位嘴下留情。
首先环境准备用的是Ubuntu22,安装的java版本是1.8的,同时建议的是使用zookeeper-3.4.10.tar.gz。事先已经部署好了hadoop伪分布集群,这些我是参考林子雨老师的博客实现的,这里不赘述。
伪分布式安装zookeeper,自然就是在同一台服务器上启动多个zk服务。
先在/usr/local/hadoop目录下./sbin/start-dfs.sh启动伪分布集群!!!
目录
1.下载安装包zookeeper-3.4.10到Downloads上
1.下载安装包zookeeper-3.4.10到Downloads上
使用XFTP或者使用scp将安装包zookeeper-3.4.10.tar.gz上传到/home/hadoop(此处是主机用户名,我这里直接就是hadoop)/Downloads下
2.解压到/usr/local目录
cd /home/hadoop/Downloads
tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/local
⒊更名
mv zookeeper-3.4.10 zookeeper
4.复制三份(伪分布用作替代三台机)
cp -r zookeeper /usr/local/zookeeper01
cp -r zookeeper /usr/local/zookeeper02
cp -r zookeeper /usr/local/zookeeper03
5.新建myid文件
要进之前复制出来的三个zookeeper0?目录下,里面mkdir{dataDir,datalogDir}
cd /usr/local/zookeeper01
mkdir {dataDir,dataLogDir} #zookeeper01,zookeeper02,zookeeper03都要创建
cd /usr/local/zookeeper02
mkdir {dataDir,dataLogDir}
cd /usr/local/zookeeper03
mkdir {dataDir,dataLogDir}
cd /usr/local/zookeeper01/dataDir/
vim myid #在里面输入1
cd /usr/local/zookeeper02/dataDir/
vim myid #在里面输入2
cd /usr/local/zookeeper03/dataDir/
vim myid #在里面输入3
#类似下面这样
#echo "1" > /usr/local/zookeeper01/dataDir/myid
#echo "2" > /usr/local/zookeeper02/dataDir/myid
#echo "3" > /usr/local/zookeeper03/dataDir/myid
⒍配置zoo.cfg文件
(须知此处配置server IP为本机IP)修改记得改dataDir和dataLogDir路径!!!
配置zookeeper01的zoo.cfg
cd /usr/local/zookeeper01/conf
cp /usr/local/zookeeper01/conf/zoo_sample.cfg zoo.cfg
vim /usr/local/zookeeper01/conf/zoo.cfg
tickTime=2000 #默认有
initLimit=10 #默认有
syncLimit=5 #默认有
dataDir=/usr/local/zookeeper01/dataDir #要改!即前面新建的路径
dataLogDir=/usr/local/zookeeper01/dataLogDir #要改!同理
clientPort=2181 #该服务的端口号
server.1=192.168.239.239:2888:3888 #此处的IP即自己主机的IP
server.2=192.168.239.239:2889:3889 #可另外打开一个终端使用ip addr show查看自己的IP
server.3=192.168.239.239:2890:3890
配置zookeeper02的zoo.cfg
cd /usr/local/zookeeper02/conf
cp /usr/local/zookeeper02/conf/zoo_sample.cfg zoo.cfg
vim /usr/local/zookeeper02/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper02/dataDir #修改指定路径
dataLogDir=/usr/local/zookeeper02/dataLogDir ##修改指定路径
clientPort=2182 #端口号要更改,不能与其他服务端口冲突
server.1=192.168.239.239:2888:3888 #记得改成自己的IP
server.2=192.168.239.239:2889:3889
server.3=192.168.239.239:2890:3890
配置zookeeper03的zoo.cfg
cd /usr/local/zookeeper03/conf
cp /usr/local/zookeeper03/conf/zoo_sample.cfg zoo.cfg
vim /usr/local/zookeeper03/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper03/dataDir #同理,改成指定路径
dataLogDir=/usr/local/zookeeper03/dataLogDir #同理
clientPort=2183 #修改端口号
server.1=192.168.239.239:2888:3888 #修改成自己的IP
server.2=192.168.239.239:2889:3889
server.3=192.168.239.239:2890:3890
此步骤要谨慎布置,仔细检查,如果配置错误容易导致后面启动失败!同理启动失败时回来查看文件修改是否有误!
7.启动集群
(这里启动失败的话可能由于权限不足,授予权限sudo chmod -R 777 /usr/local,再进入目录./zkServer.sh start)
后台启动zookeeper01的zoo.cfg服务端
cd /usr/local/zookeeper01/bin/
./zkServer.sh start # 启动第一个节点
netstat -lntp |grep java # 查看监听的端口
这里如果显示没有安装net-tools工具,可自己使用apt安装
后台启动zookeeper02的zoo.cfg服务端
cd /usr/local/zookeeper02/bin/
./zkServer.sh start # 启动第二个节点
netstat -lntp |grep java # 查看监听的端口
后台启动zookeeper03的zoo.cfg服务端
cd /usr/local/zookeeper03/bin/
./zkServer.sh start # 启动第三个节点
netstat -lntp |grep java # 查看监听的端口
8.查看进程
[root@hadoop bin]# jps
13889 QuorumPeerMain
14002 QuorumPeerMain
14073 QuorumPeerMain
14122 Jps
#因为是伪分布,这里应该还启动了hadoop的,但是这几个是肯定有的
9.启动完后依次查看集群的状态、主从信息
/usr/local/zookeeper01/bin/zkServer.sh status
/usr/local/zookeeper02/bin/zkServer.sh status
/usr/local/zookeeper03/bin/zkServer.sh status
这里有个问题是一定要全部启动后按顺序启动集群!
10.制作查看状态脚本
cd /usr/local
vim checked.sh # 脚本内容如下
#!/bin/bash
/usr/local/zookeeper01/bin/zkServer.sh status
/usr/local/zookeeper02/bin/zkServer.sh status
/usr/local/zookeeper03/bin/zkServer.sh status
sh ./checked.sh # 执行脚本命令
顺利启动集群之后显示如下:
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper01/bin/../conf/zoo.cfg
Mode: follower # 从节点
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper02/bin/../conf/zoo.cfg
Mode: leader # 主节点
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper03/bin/../conf/zoo.cfg
Mode: follower
#一定会看到有两个follow和一个leader
11.zookeeper关闭命令
此处如果想要关闭则执行这些命令,但是后续还要在eclipse里执行Java API,因此先不关闭,仅供参考。
/usr/local/zookeeper01/bin/zkServer.sh stop
/usr/local/zookeeper02/bin/zkServer.sh stop
/usr/local/zookeeper03/bin/zkServer.sh stop
12.打开eclipse,新建目录导入相关包
这里暂时没有那么多图,当时做完之后并没有保存太多图片,建议是实践为主。我这里只能大概描述怎么在eclipse里面使用Java API调用Zookeeper 。假设已经安装好了eclipse
(1)新建Java project,记得导入相应的包,(大抵都是在解压的包目录下和相应的lib目录下能找到)否则在import(引入)的时候会报错,且无法执行相应的zookeeper功能。
(2)在Ubuntu的终端端口
cd /usr/local/zookeeper/conf #此目录下应该是有log4j文件
cp -r log4j.properties ~/home/eclipse/StudyZookeeper/src
#将安装的zookeeper包里面的log4j文件复制进eclipse里面新建的project的src目录下
(3)在新建的project类里面新建class,再编写相应的Java API程序即可,此处我就不提供代码了,网上也有很多,记得修改对应的参数,像指定的客户端IP、端口;如有必要还可添加相应的依赖。
以上差不多就是这篇博客的全部内容,大家继续努力吧。
ps:一些絮絮叨叨,可以不看
在这些知识方面,课上学的也还是不够多,网上的资料,视频,还有更多值得我们去学习和琢磨的地方。即使是这篇博客,很多也是借鉴了别人的思路和方法,写这篇文章的时候也还是个学生,如果有得罪各位大佬的地方请大家嘴下留情,有不对的地方也请大佬在评论区指出,希望能够帮到真心想学好这些知识的人。
当前的环境我也不知道以后是不是还会坚持下去,这只是作为我曾经学过这一门课的纪念,我平时也很少写博客,但是这些知识相对于我来说很有意思,我也希望以后还有用到的时候能够翻开自己的博客想起当初是怎么做的。第一次在这里写博客我连很多分行和字体都不怎么会调整,但是还是很高兴,第一次尝试,也谢谢大家赏脸,算是一个小小的里程碑吧。