Zookeeper集群的安装教程

时间:2021-02-23 16:38:00

安装前说明:

1、 zookeeper对内存的消耗比较大,在安装zookeeper的时候要安装在内存比较大的机器中。

2、 zookeeper安装需要是基数台机器,因为zookeeper默认半数以上(不包含半数)的机器正常运行时正常使用,低于半数(不包含半数)就不能正常使用,试想偶数台机器肯定会出现等于半数的情况。

例:

当有四台机器组成的zookeeper集群,宕机一台,剩下三台大于半数可用,宕机两台,剩下两台,非半数以上,zookeeper集群不可用。

当有三台机器组成的zookeeper集群,宕机一台,剩下两台大于半数可用,宕机两台,剩下一台非半数以上,zookeeper集群不可用。

由此可以看出四台zookeeper集群和三台zookeeper集群效果一样,宕机两台,集群均会废掉,用四台还浪费资源,对不对,最佳实践就是用三台机器,总结的来说就是用基数台机器。

3、 下面将安装三台机器的zookeeper,分别为slave1、slave2、slave3,只演示一台,其他安装相同,安装hadoop的时候可以多台机器一键启动,这里zookeeper只能逐台手动启动

安装步骤:

1、 切换到hadoop用户,上传zookeeper安装包

Zookeeper集群的安装教程

2、 解压安装包,重命名解压后的目录

[hadoop@slave1 ~]$ tar -zxvfzookeeper-3.4.5.tar.gz
[hadoop@slave1 ~]$ mv zookeeper-3.4.5zookeeper

3、 修改环境变量

切换回到root用户

[root@slave1 ~]# vim /etc/profile

打开profile文件,配置zookeeper的环境变量

ZOOKEEPER_HOME=/home/hadoop/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin


重新编译profile文件

[root@slave1 ~]# source /etc/profile

配置、编译完成后切换到hadoop用户

4、 修改zookeeper配置文件

进入zookeeper配置文件目录conf:

[hadoop@slave1 ~]$ cd zookeeper/conf

目录下有一个zoo_sample.cfg文件,将该文件改名为zoo.cfg,在文件的最后添加下面的内容:

dataDir=/home/hadoop/zookeeper/data
dataLogDir=/home/hadoop/zookeeper/log
server.1=slave1:2888:3888
server.2=slave2:2888:3888
server.3=slave3:2888:3888


5、 回到zookeeper安装目录,创建上一步配置的data和log目录,并给目录755权限:

[hadoop@slave1 zookeeper]$ mkdir -m 755 data
[hadoop@slave1 zookeeper]$ mkdir -m 755 log

6、 进入data目录,创建一个myid文件,并在文件内写入该台机器对应的id:

在第四步的配置中已经设置了slave1机器的id为1,slave2的机器为2,slave3的机器为3,现在我们配置的是slave机器,自然是在slave1中添加一个1,没有整个文件就一个字符“1”;

[hadoop@slave1 zookeeper]$ cd data
[hadoop@slave1data]$ touch myid
[hadoop@slave1 data]$ vim myid

到此为止slave1中的zookeeper就安装成功了,按同样的步骤安装另外几台机器。

这里教大家一个技巧slave1中安装好并配置好了zookeeper,可以直接将安装好的zookeeper发送到其余的机器中,使用scp命令。

scp –r /home/hadoop/zookeeper hadoop@slave2:/home/hadoop

这样就可以将slave1中安装好的zookeeper发送到slave2机器中了,记得这里发送完成后要到slave2机器中将myid文件中的1改为slave2对应的id,这里为2.切换到root用户在添加zookeeper和重新编译一下profile文件。

slave3机器也相同,不赘述。

7、 到此位置3台机器中的zookeeper都已经安装结束。快动手开始自动集群。集群启动结束记得使用jps命令查看一下zookeeper是否正常启动。

slave1机器:

[hadoop@slave1conf]$ zkServer.sh start
JMXenabled by default
Usingconfig: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
Startingzookeeper ... /home/hadoop/zookeeper/bin/zkServer.sh: line 103: [:/tmp/zookeeper: binary operator expected
STARTED
[hadoop@slave1conf]$ jps
1642QuorumPeerMain
1668 Jps
[hadoop@slave1 conf]$

slave2机器:

[hadoop@slave2data]$ zkServer.sh start
JMXenabled by default
Usingconfig: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
Startingzookeeper ... /home/hadoop/zookeeper/bin/zkServer.sh: line 103: [:/tmp/zookeeper: binary operator expected
STARTED
[hadoop@slave2data]$ jps
1649 Jps
1618QuorumPeerMain
[hadoop@slave2 data]$

slave3机器:

[hadoop@slave3data]$ zkServer.sh start
JMXenabled by default
Usingconfig: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
Startingzookeeper ... /home/hadoop/zookeeper/bin/zkServer.sh: line 103: [:/tmp/zookeeper: binary operator expected
STARTED
[hadoop@slave3data]$ jps
1671 Jps
1646 QuorumPeerMain
[hadoop@slave3 data]$

好了,三台机器成功启动。大功告成!!!