前提条件:安装好VMware Workstation Pro、centos镜像、安装java配置好环境变量
1、在VMware安装三个虚拟机,分别是CentOS6.5-64-7、CentOS6.5-64-8、CentOS6.5-64-9。三台机对应的ip如下:
CentOS6.5-64-7:10.1.32.85
CentOS6.5-64-8:10.1.32.193
CentOS6.5-64-9:10.1.32.161
2、
修改机器名vi /etc/sysconfig/network 修改如下配置:HOSTNAME=机器名称。三台机器分别设置为:hadoop7、hadoop8、hadoop9
3、修改机器名称与IP地址对应关系:vi /etc/hosts
4、上传
zookeeper-3.4.10.tar.gz包到指定目录(/home/hadoop/app),并且解压到该目录
解压命令:tar xvf
zookeeper-3.4.10.tar.gz
5、
进入zookeeper-3.4.10/conf目录创建zoo.cfg文件
cd /home/hadoop/zookeeper-3.4.10
cd conf
mv zoo_sample.cfg zoo.cfg
修改zoo.cfg文件里面的内容
dataDir=/home/hadoop/app/zkdata
dataLogDir=/home/hadoop/app/zklogs
在文件底部添加如下配置:
server.1=hadoop7:2888:3888
server.2=hadoop8:2888:3888
server.3=hadoop9:2888:3888
其中server.数字 是固定格式,后面myid文件中要对应上
配置的解析:
- tickTime:CS通信心跳时间
Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
tickTime=2000
- initLimit:LF初始通信时限
集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
initLimit=5
- syncLimit:LF同步通信时限
集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
syncLimit=2
- dataDir:数据文件目录
Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
dataDir=/usr/zookeeper/data
- clientPort:客户端连接端口
客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort=2181
- 服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
这个配置项的书写格式比较特殊,规则如下:
server.N=YYY:A:B
6、创建myid文件:在zoo.cfg中设置的dataDir对应的目录中(/home/hadoop/app/zkdata)创建myid文件,文件的内容为服务的编号
cd /home/hadoop/app/zkdata
touch myid
vi myid
以上是在hadoop7
机器上的配置,同理在hadoop8、hadoop9
机器进行相应的配置
7、三台机器配置完之后,启动zookeeper(三台机器都要启动),查看zookeeper的状态
启动:
cd home/hadoop/app/zookeeper-3.4.10
cd bin
./zkServer.sh start
状态:
./zkServer.sh status 可以查看状态,三台机器中有一台会是leader状态其它是follower状态
8、测试zookeeper
进入zookeeper-3.4.10的bin目录连接服务:./zkCli.sh
在hadoop7机器创建一个文件 create /hadoop7 “test”
在hadoop8或者hadoop9机器登录zookeeper: ./zkCli.sh
获取hadoop7文件内容:get /hadoop7
以上是个人搭建zookeeper集群的总结,有错的地方烦请各位大神指出!