前言
本文章主要就是从0开始搭建zookeeper集群环境,首先给读者介绍一下我的环境,我有三台centos7的Linux集群,分别命名为node1,node2,node3,搭建的是完全分布式集群,zookeeper版本为3.4.2。望读者悉知,以免误了时光。
提前安装工具
在zookeeper我们需要nc这个工具,所以,我们提前安装一下
yum install nc -y
记得三台机器上都要安装哟!
下载
第一步就是下载安装包,我建议所有的安装都去官方的来源下载,避免第三方会改动代码,或者代码不完整,染上病毒也是极其不妥的。
官方地址:
https://zookeeper.apache.org/
如果英语好的,可以自行找到需要下载的版本,如果英语不好的就可以直接根据下面我给出的地址下载即可,省去了页面寻找的时间。
https://archive.apache.org/dist/zookeeper/zookeeper-3.4.2/zookeeper-3.4.2.tar.gz
打开我们得服务器,首先我们现在node1节点上搭建成功,后面复制就行了。读者如不知自己node1为何,可随意自行挑选一台服务器来决定即可,此不慎重要,自行决断方可。
本文使用wget下载工具来下载zookeeper,如果读者没有安装,可先安装一下,命令如下。
yum install wget -y
然后开始下载,命令如下:
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.2/zookeeper-3.4.2.tar.gz
下载速度不尽相同,各位需要根据网速多少来等待上那么一段时间,听个小曲也是极好的。
下载完成如图所示:
安装
上一步,我们已经下载好安装到服务器上,那么接下来就是安装了,我们下载的安装包只需要解压就相当于安装了,不需要其他的软件那种make之类的,所以,解压目录就是安装目录,各位需要各自找个好目录来安装哟。我解压的目录是在/opt/bigdata下面。
解压命令如下:
tar -xzvf zookeeper-3.4.2.tar.gz -C /opt/bigdata/ #输入完命令后回车
然后切换到解压的目录
cd /opt/bigdata
看到图中的zookeeper-3.4.2就表示安装成功。
接下来的操作稍微有点特殊,给读者简单介绍一下,此前,我在我Linux用户建立了hadoop这个用户,我设想的是hadoop集群的操作都用这个用户这个来操作,所以,zookeeper一样,读者可根据自己的情况来决断,是否和我一样。
#按照安装hadoop的方式,将zookeeper的安装目录的所属组修改为hadoop:hadoop
#修改zookeeper安装目录的所属用户和组为hadoop:hadoop
chown -R hadoop:hadoop zookeeper-3.4.2/
#修改zookeeper安装目录的读写权限
chmod -R 755 zookeeper-3.4.2/
配置环境变量
这一步很重要,首先上面那一步,如果读者并没有hadoop这个用户,可以直接在root用户下面来操作我接下来的命令,如果是配置了其他的用户,需要切换到相应的目录下面。
su - hadoop # 切换到hadoop用户目录下面,读者可以根据自己的用户替换hadoop相应的字段
切换完之后,主要的变化就是说原先的root,变成了切换到的用户下面。
然后切换到用户的家目录下面
vim .bash_profile
加入上面的三行内容,然后不要忘记source一下。
source .bash_profile # 这一步很重要,不进行的话,上面的配置就没啥用了
修改集群的配置文件
切换到配置文件目录
/opt/bigdata/zookeeper-3.4.2/conf
查看文件,发现其中有一个zoo_sample.cfg文件,这个是默认的一个模板配置。
我们复制一下他,然后改个名字
cp zoo_sample.cfg zoo.cfg
然后修改文件里面的内容
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/opt/bigdata/zkdata
# the port at which the clients will connect
clientPort=2181
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
# 这里增加三行内容
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
看到上面的配置文件,我需要改动的就是,把dataDir的内容换成/opt/bigdata/zkdata
写到这里,我要着重介绍一下,我们改的这个配置到底是干啥的。
我们知道zookeeper是一个集群的管理协调工具,说白了,就是管理其他的服务的一个工具,那至于怎么管理的,我会找文章来写,简单来说就是其他的服务会在zookeeper服务下面注册一个节点,zookeeper会进行监听这个节点,节点也是数据,可以理解为一个目录,或者文件,那么这个dataDir配置项就是用来存贮节点的一个目录,读者可以选择自己喜欢的位置来更改,我这里是选择了/opt/bigdata/zkdata下面。
这里要特别注意一下:记得这个一定要自己手敲,不要复制,后面不要出现空格等,不然就会出现无法想象的问题,这一点是很坑的。
然后增加三行内容:
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
解释一下
sever.1表示服务一
node1表示节点一,这里可以用当前机器上的IP地址来代替,因为我在服务上的host中配置了node1节点的解析所以可以这么写,然后后面的就默认吧
配置完之后保存。
创建myid文件
还记得上面我配置了datadir目录吗?如果没有这个目录的话,记得要创建哦,上面配置的时候我们一直在hadoop用户目录下面,如果读者的配置的目录对于当前用户来说有读写权限的话就不用改,但是我没有,所以我需要更改用户,我要切换回root用户。
su - root
会提示你输入密码,各自输入一下即可。
因为服务器上现在还没有这个目录,所以我需要创建一下,读者可自行决定。
cd /opt/bigdata
mkdir zkdata
然后进入zookeeper目录创建myid文件
cd zkdata
vim myid
然后在文件里面输入数字1即可。
到这里了zookeeper可能有点迷茫,这是为啥哦?
是这样子滴,zookeeper想要集群来的话,没个服务器上的zookeeper必须要有一个唯一的不重复的id,我们这里写的1就是表示这台服务器上的zookeeper的ID为1,其他的服务器同样也需要创建这个文件,但是id不能写成1,可以写成2,3.。。这样子一直下去,有几台集群就写到多少,zookeeper后面可是通过这个id来管理集群的。
OK,解释完毕,还要赋予hadoop用户对zookeeper的执行读写权限。
cd ..
chown -R hadoop:hadoop zkdata/
chmod -R 755 zkdata/
复制zookeeper到其他的机器上
通过上面的步骤,我们就把一台服务上的zookeeper给搭建好了,接下来就搭建其他服务器。
那就是将上面安装好的复制到其他机器上,根据我的命令读者自行更改即可。
scp -r /opt/bigdata/zkdata node2:$PWD
scp -r /opt/bigdata/zkdata node3:$PWD
scp -r /opt/bigdata/zookeeper-3.4.2/ node2:/opt/bigdata/
scp -r /opt/bigdata/zookeeper-3.4.2/ node3:/opt/bigdata/
修改node2和node3节点的权限问题
这个时候我们切到node2服务器上面
cd /opt/bigdata
chown -R hadoop:hadoop zkdata/
chmod -R 755 zkdata/
cd /opt/bigdata/
chown -R hadoop:hadoop zookeeper-3.4.2/
chmod -R 755 zookeeper-3.4.2/
然后切换到node3节点上面:
cd /opt/bigdata
chown -R hadoop:hadoop zkdata/
chmod -R 755 zkdata/
cd /opt/bigdata/
chown -R hadoop:hadoop zookeeper-3.4.2/
chmod -R 755 zookeeper-3.4.2/
修改node2和node3上面myid文件的内容
切换到node2上面
vim /opt/bigdata/zkdata/myid
# 将1改成2
# 保存 wq!
切换到node3上面同node2一样的操作,不同是需要把1改成3
vim /opt/bigdata/zkdata/myid
# 将1改成3
# 保存 wq!
配置node2和node3的zookeeper环境变量
切换到node2上面
su - hadoop
vim .bash_profile
修改文件内容
source .bash_profile
然后切换到node3上,同样的操作再来一遍。
补充解决坑
按说我们已经安装完毕了,但是因为这个3.4.2这个版本有点问题,具体什么问题呢?就会启动之后如果想查看状态会有这个问题:
所以,我就直接提前给同学们把坑给填上。
cd /opt/bigdata/zookeeper-3.4.2/bin
vim zkServer.sh
然后把按照图示把-q 1 给删除掉
然后保存。记得三台节点都要做同样的操作哦!
启动集群
切换到node1,node2,node3,分别执行
zkserver.sh start
查看状态
切换到node1,node2,node3分别执行
zkServer.sh status
如果你看到如下的,就说明整个集群安装成功了。
我的node1如下
我的node2如下:
我的node3如下:
总结
以上就是本次zookeeper集群安装的全部内容了,如果您遇到了什么错误,欢迎在下面给我留言,我们共同学习,也欢迎关注本专栏,有新的内容就会推送给您。