用户为hadoop,安装目录为/opt/app下面
上传安装文件到/opt下面
root用户解压
[root@master opt]$ tar -zxvf zookeeper-3.4.7.tar.gz -C /opt/app/
修改用户及属组
[root@master opt]# chown -R hadoop:hadoop zookeeper-3.4.7
创建数据文件夹并修改属组(并在slave01和slave02上同样创建)
mkdir /home/hadoop/app/zookeeper-3.4.7/tmp
chown -R hadoop:hadoop /home/hadoop/app/zookeeper-3.4.7/tmp
切换用户并修改文件zoo.cfg
su – hadoop
mv zoo_sample.cfg zoo.cfg
#修改数据文件夹自定
dataDir=/home/hadoop/app/zookeeper-3.4.7/tmp
#添加服务器
server.1=master:2888:3888
server.2=slave01:2889:3889
server.3=slave02:2890:3890
集群中后面的端口最好都配置一样。
server.1=master:2888:3888
server.2=slave01:2888:3888
server.3=slave02:2888:3888
最后几行唯一需要注意的地方就是 server.X 这个数字就是对应 data/myid中的数字。你在3个server的myid文件中分别写入了1,2,3,那么每个server中的zoo.cfg都配server.1,server.2,server.3就OK了。因为在同一台机器上,后面连着的2个端口3个server都不要一样,否则端口冲突,其中第一个端口用来集群成员的信息交换,第二个端口是在leader挂掉时专门用来进行选举leader所用。
// server.X=A:B:C
其中X是一个数字,表示这是第几号server.
A是该server所在的IP地址.
B配置该server和集群中的leader交换消息所使用的端口.
C配置选举leader时所使用的端口
进入数据文件夹创建myid为1
cd /home/hadoop/app/zookeeper-3.4.7/tmp/
echo 1 > /home/hadoop/app/zookeeper-3.4.7/tmp/myid (对应上面的X 1:1号server)
将配置到的zookeeper拷贝到其他电脑(slave01,slave02)上
scp -r zookeeper-3.4.7 hadoop@slave01:/opt/app (-r表示递归)
scp -r zookeeper-3.4.7 hadoop@slave02:/opt/app
修改属组
[root@master opt]# chown -R hadoop:hadoop zookeeper-3.4.7
注意:修改slave01、slave02对应/home/hadoop/app/zookeeper-3.4.7/tmp/myid内容
slave01:
echo 2 > /home/hadoop/app/zookeeper-3.4.7/tmp/myid
slave02:
echo 3 > /home/hadoop/app/zookeeper-3.4.7/tmp/myid
配置环境变量
sudo vi /etc/profile
export ZOOKEEPER_HOME=/opt/app/zookeeper-3.4.7
export PATH=$PATH:$ZOOKEEPER_HOME/bin
(同样在master、slave02节点上也进行同样的操作)
启动,在三台机器上执行
bin/zkServer.sh start bin/zkServer.sh stop(关闭)
判断是否启动成功
Jps
或者查看进程-#有信息则启动成功
ps -aux | grep 'zookeeper'
最好查看日志 #查看是否报错
tail -f -n 500 zookeeper.out
查看zookeeper角色
在master节点上:
zkServer.sh status
在slave01节点上:
在slave02节点上:
Leader角色至始至终只有一个,通过选举算法产生。节点中只要有一个leader死掉,马上就会通过选举算法产生一个新的leader.
进入zookeeper-3.4.7/bin 目录中,./zkServer.sh start启动一个server,这时会报大量错误?其实没什么关系,因为现在集群只起了1台server,zookeeper服务器端起来会根据zoo.cfg的服务器列表发起选举leader的请求,因为连不上其他机器而报错,那么当我们起第二个zookeeper实例后,leader将会被选出,从而一致性服务开始可以使用,这是因为3台机器只要有2台可用就可以选出leader并且对外提供服务(2n+1台机器,可以容n台机器挂掉)。