使用zk必须有java环境,如果有条件就用现有的资源进行克隆,如果没有条件就自己搭建一个环境带着java环境就好。
本人使用现有工程进行克隆操作,克隆三台机器,基于199机器进行克隆。
ip:192.168.31.235
ip:192.168.31.100
ip:192.168.31.43
账号root
密码:player3.
zk本地安装
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.7/apache-zookeeper-3.5.7-bin.tar.gz
在根目录新建module文件夹
将文件解压到module文件夹下
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /module/
可以删除压缩包
mv apache-zookeeper-3.5.7-bin/ zookeeper-3.5.7
进入之后的目录结构
进入conf文件夹
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
需要把dataDir=/tmp/zookeeper地址修改安装目录下的地址,这个tmp是临时目录,过一段时间数据就会背清理掉的。
在自己的目录下创建文件夹:
/module/zkData
修改为你自己的目录后保存。
进入bin,启动server
. zkServer.sh start
启动服务端:
. zkCli.sh
conf下的参数说明:
tickTime=2000 通信心跳时间,zk服务器与客户端心跳时间,单位毫秒 initLimit=10 leader和Follower初始连接时能容忍的最多心跳数(tickTime数量) 最多不能超过10*心跳时间 syncLimit=5 LF同步通信时限 一旦建立好连接之后,5*2000还没有进行,l认为f死掉,从服务列表删除f dataDir:保存zk中的数据,tmp容易被系统自动清理 clientPort=2181 客户端连接端口通常不修改
zk集群版安装
集群安装:
集群规划:
在hadoop三个节点都部署zk
思考:如果是10台机器需要部署10台吗?
我们这里使用scp 进行发送
scp zookeeper-3.5.7 root@192.168.31.100:/module/zookeeper-3.5.7
报错:不是一个文件
zookeeper-3.5.7: not a regular file
所以加上 -r
scp -r zookeeper-3.5.7 root@192.168.31.100:/module/zookeeper-3.5.7
scp -r zookeeper-3.5.7 root@192.168.31.43:/module/zookeeper-3.5.7
问你是否yes,输入yes
在zk01,zk02,zk03的module文件夹下都有数据存放目录,zkData,在这里创建myid文件,保存各自的id ,zk01,填1,zk02填2,zk03填3 保存
最后修改conf中的文件
server.1=192.168.31.235:2888:3888
server.2=192.168.31.100:2888:3888
server.3=192.168.31.43:2888:3888
解释:
增加配置:
server.1=192.168.31.235:2888:3888
server.2=192.168.31.100:2888:3888
server.3=192.168.31.43:2888:3888
server.A=B:C:D
A是一个数字代表第几号服务器
这个是myid的值
b是服务器的地址
c是fl交换信息端口
d是集群l服务挂了的端口选举。
解决ZooKeeper集群搭建 [myid:1] - WARN [QuorumPeer[myid=1]:QuorumCnxManager@685] - Cannot open channel
[QuorumPeer[myid=1](plain=0.0.0.0:2181)
在配置文件conf/zoo.cfg中添加 quorumListenOnAllIPs=true
如果你的能直接启动service和client,可以不用加。
.zkServer.sh start 将三台都启动成功
client也启动: . zkCli.sh
进入命令行后: ls /
显示: [zookeeper]
创建文件,并设置初始内容: create /zk "test" 创建一个新的 znode节点“ zk ”以及与它关联的字符串
在其他节点也能get到说明集群搭建成功。