安装前说明:
1、 zookeeper对内存的消耗比较大,在安装zookeeper的时候要安装在内存比较大的机器中。
2、 zookeeper安装需要是基数台机器,因为zookeeper默认半数以上(不包含半数)的机器正常运行时正常使用,低于半数(不包含半数)就不能正常使用,试想偶数台机器肯定会出现等于半数的情况。
例:
当有四台机器组成的zookeeper集群,宕机一台,剩下三台大于半数可用,宕机两台,剩下两台,非半数以上,zookeeper集群不可用。
当有三台机器组成的zookeeper集群,宕机一台,剩下两台大于半数可用,宕机两台,剩下一台非半数以上,zookeeper集群不可用。
由此可以看出四台zookeeper集群和三台zookeeper集群效果一样,宕机两台,集群均会废掉,用四台还浪费资源,对不对,最佳实践就是用三台机器,总结的来说就是用基数台机器。
3、 下面将安装三台机器的zookeeper,分别为slave1、slave2、slave3,只演示一台,其他安装相同,安装hadoop的时候可以多台机器一键启动,这里zookeeper只能逐台手动启动
安装步骤:
1、 切换到hadoop用户,上传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]$
好了,三台机器成功启动。大功告成!!!