注:
zookeeper集群配置需要为奇数个并且 > 1
1.节点概览
节点IP | 节点主机名 | Zookeeper端口 |
---|---|---|
192.168.183.81 | mycat01 | 2181 |
192.168.183.82 | mycat02 | 2181 |
192.168.183.83 | mycat03 | 2181 |
这里默认我已经对三节点安装了jdk,并配置了JAVA_HOME到PATH,因为使用的虚拟机,没有采用开放端口的形式,只是把三台的防火墙关闭了而已,另外顺便做了IP和主机名映射及免密登录。
2.环境搭建(3.4.13版本)
下载方式:
1)Apache Zookeeper 网址:https://www.apache.org/dist/zookeeper/zookeeper-3.4.13/
2)wget https://www.apache.org/dist/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
3)wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
Apache Zookeeper上貌似只有一个 3.4.13 版本,其他版本可参见:华中科技大学镜像源
http://mirrors.hust.edu.cn/apache/zookeeper/
3.上传安装包并解压
我把 该解压文件的所有者与所属这全部改成了
hadoop
,并且拥有执行权限
[hadoop@mycat01 ~]$ tar -zxvf zookeeper-3.4.10.tar.gz
[hadoop@mycat01 ~]$ ll
drwxr-xr-x 10 hadoop hadoop 4096 Mar 25 23:43 zookeeper-3.4.10
-rwxrw-r-- 1 hadoop hadoop 35042811 Mar 25 17:40 zookeeper-3.4.10.tar.gz
4.修改配置文件
cd zookeeper-3.4.10/conf
[hadoop@mycat01 conf]$ ll
total 12
-rw-rw-r-- 1 hadoop hadoop 535 Mar 23 2017 configuration.xsl
-rw-rw-r-- 1 hadoop hadoop 2161 Mar 23 2017 log4j.properties
-rw-rw-r-- 1 hadoop hadoop 1015 Mar 25 17:43 zoo_sample.cfg
我们需要把zoo_sample.cfg
这样启动服务的时候就可以被加载到
mv zoo_sample.cfg zoo.cfg
修改:
我们需要修改的主要两个地方
[hadoop@mycat01 ~]$ vim 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=/home/hadoop/zookeeperdata # 这个是必须要修改的,不能放到/tmp临时目录下
# the port at which the clients will connect
clientPort=2181 # 这里我直接使用默认的端口就好了
# the maximum number of client connections.
# increase this if you need to handle more clients
# maxClientCnxns=60
#
# 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=mycat01:2888:3888 # server.id=zookeeper节点主机名:2888:3888 选举端口和投票端口固定
server.2=mycat02:2888:3888 # 如果有四台zookeeper的话,由于非observer节点数必须为奇数个
server.3=mycat03:2888:3888 # 所以如果有第四台的话,可以使用如下添加方式
# server.4 =mycat04:2888:3888:observer # id是自己定义的,0~255间,不必一次递增,自己定即可
上面dataDir
是快照存储目录,需要修改目录,切不要放在/tmp这样的临时目录,而且这个目录必须存在,不然会报错,所以等下需要手动新建该目录。
server.3
此处server
后面的是该节点缩持有的投票编号id,必须全局唯一。
5.创建每个节点的编号文件
在每一个Zookeeper节点上zookeeper创建快照数据文件夹:(这个是我在上面配置文件中指定的dataDir)
mkdir /home/hadoop/zookeeperdata
在每一个Zookeeper节点上的/home/hadoop/zookeeperdata
创建名称为myid
的文件(名称必须为myid
)
vim /home/hadoop/zookeeperdata/myid
第一台Zookeeper节点myid
文件中加入:(参见配置文件中配置—server.1=mycat01:2888:3888
)
1
第二台Zookeeper节点myid
文件中加入:(参见配置文件中配置—server.2=mycat02:2888:3888
)
2
第三台Zookeeper节点myid
文件中加入:(参见配置文件中配置—server.3=mycat03:2888:3888
)
3
如果你有配置更多的节点的话,按照配置文件的配置来设置就好了
6.将zookeeper分发到各个节点
cd ~
scp -r zookeeper-3.4.10 hadoop@mycat:/home/hadoop/
7.将zookeeper根目录配置到PATH中
sudo vim /etc/profile
我的环境变量参考如下,
我的zookeeper目录之所以是zk,是因为我设置了软链接
例如:
[hadoop@mycat01 ~]$ ll total 24590 lrwxrwxrwx 1 hadoop hadoop 29 Mar 27 19:12 zk -> /home/hadoop/zookeeper-3.4.10 drwxr-xr-x 10 hadoop hadoop 4096 Mar 25 23:43 zookeeper-3.4.10 -rwxrw-r-- 1 hadoop hadoop 35042811 Mar 25 17:40 zookeeper-3.4.10.tar.gz drwxrwxr-x 3 hadoop hadoop 4096 Mar 25 23:43 zookeeperdata
export JAVA_HOME=/opt/jdk1.8.0_73
export ZOO_HOME=/home/hadoop/zk
export PATH=$PATH:$JAVA_HOME/bin:$ZOO_HOME/bin
使配置生效:
source /etc/profile
8.启动zkServer
在每台Zookeeper节点上执行下列命令
zkServer.sh start
查看启动状态:(只启动一台时查看报错----忽略)
zkServer.sh status
如果状态中有follower
或observer
或leader
表示搭建成功(leader只能有一台)
9.测试客户端效果
[hadoop@mycat01 ~]$ zkCli.sh
Connecting to localhost:2181
.........
[zk: localhost:2181(CONNECTED) 0] # 这里显示 已连接到2181端口
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper] # 默认这个znode是zookeeper的,不要删除
至此zookeeper集群环境搭建结束。