准备工作
- 1.搭建好的hadoop分布式系统
- 2.zookeeper-3.4.10.tar.gz
安装
解压zookeeper-3.4.10.tar.gz包完成安装
#tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/local/hadoop
配置
- 1.添加环境变量
#vim /etc/profile
添加如下记录:
ZOOKEEPER_HOME=/usr/local/hadoop/zookeeper-3.4.10
export PATH=$ZOOKEEPER_HOME/bin:$PATH
使配置文件生效
#source /etc/profile
- 2.创建用于保存zookeeper临时文件的zookeeperData目录并在目录下创建文件myid
#mkdir -p /home/hadoop/zookeeper-3.4.10/zookeeperData
#cd /home/hadoop/zookeeper-3.4.10/zookeeperData
#vim myid
写入内容:1
- 3.修改zookeeper的配置文件
#cd /usr/local/hadoop/zookeeper-3.4.10/conf
#mv zoo_sample.cfg zoo.cfg
#vim zoo.cfg
//指定zookeeper临时文件的保存路径
dataDir=/home/hadoop/zookeeper-3.4.10/zookeeperData
//添加如下记录
server.1=Master:2888:3888
server.2=Slave1:2888:3888
server.3=Slave2:2888:3888
注:server.X=A:B:C 其中X是一个数字(myid中的数字),表示这是第几号server。A是该server所在的IP地址,B配置该server和集群中的leader交换消息所使用的端口,C配置选举leader时所使用的端口。
复制zookeeper-3.4.10文件夹
集群中的每一台机器都需要安装配置zookeeper
方法一:以上同样的步骤在集群中的每一台机器上做一次。
方法二:使用scp -r命令复制
#scp -r /home/hadoop/zookeeper-3.4.10 Slave1:/home/hadoop/
#scp -r /usr/local/hadoop/zookeeper-3.4.10 Slave1:/usr/local/hadoop/
注:命令中的Slave1是主机名。/etc/profile就别瞎复制了,毕竟是配置文件,勤快点改改吧!复制之后记得修改myid的值,2,3…
启动和停止
由于在/etc/profile中设置了zookeeper的环境变量,启动和停止就变得非常的方便了。
启动
#zkServer.sh start
停止
#zkServer.sh stop
验证
#jps
在hadoop集群运行着的情况下,namenode有如下进程:
[root@Master ~]# jps
5858 NameNode
6195 ResourceManager
8601 Jps
6986 QuorumPeerMain //zookeeper进程
6045 SecondaryNameNode
[root@Master ~]#
datanode有如下进程:
[root@Slave1 ~]# jps
3703 NodeManager
5784 Jps
3598 DataNode
4239 QuorumPeerMain //zookeeper进程
[root@Slave1 ~]#
注:就算存在QuorumPeerMain进程也不代表zookeeper启动成功,需要再次使用zkServer.sh status查看zookeeper的运行状态。
#zkServer.sh status
JMX enabled by default
Using config: /usr/local/zk/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
如果出现的是如上信息说明zookeeper并没有启动成功,而出现如下信息才能说明zookeeper启动成功
#zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/hadoop/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower(或者leader)
原因一:zookeeper中myid文件有错误,myid必须和zoo.cfg中的服务器编号一致。
原因二:防火墙。zookeeper也是集群,称为zookeeper集群,集群自然需要彼此之间的通信,所以需要关闭防火墙。