Zookeeper集群配置

单机模式和分布式模式
前提:安装好jdk并配置好环境变量
安装:
    从zookeeper官网下载对应的包
    我这里选择的是zookeeper-3.4.6.tar.gz,可以使用浏览器下载(lrzsz工具上传)或linux的wget下载
    进入到/opt目录,拷贝zookeeper-3.4.6.tar.gz到改目录,解压:tar -zxvf zookeeper-3.4.6.tar.gz
环境变量(为了能找到bin下的脚本):
    export ZOOKEEPER_HOME=/opt/zookeeper-3.4.6
    export PATH=$ZOOKEEPER_HOME/bin:$PATH
    source /etc/profile

单机模式配置
(1)进入到zookeeper的目录
cd /opt/zookeeper-3.4.6/conf
拷贝配置文件:cp zoo_sample.cfg zoo.cfg
编辑配置文件:vim zoo.cfg
修改内容:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/hadoop/hadoop/zookeeper
clientPort=2181
(2)启动zookeeper进程
cd /opt/zookeeper-3.4.6/bin
启动:./zkServer.sh start
(3)查看zookeeper进程
终端输入:jps
显示进程:QuorumPeerMain 则Zookeeper服务器启动成功然后
(4)测试客户端连接服务器
cd /opt/zookeeper-3.4.6/bin
测试zkCli.sh工具测试连接:
./zkCli.sh -server hadoop1:2181
打印结果:
Session establishment complete on server hadoop1/192.168.12.104:2181
说明连接已经建立!接着可以使用help查看Zookeeper客户端可以使用的基本操作命令。
(5)停止Zookeeper服务器
./zkServer.sh stop

分布式模式
说明:
    ZooKeeper集群中具有两个关键的角色:Leader和Follower。集群中所有的结点作为一个整体对分布式应用提供服务,集群中每个结点之间都互相连接,所以,在配置的ZooKeeper集群的时候,每一个结点的host到IP地址的映射都要配置上集群中其它结点的映射信息。

(1)配置主机ip与名称(host)的映射
例如我的机器集群:192.168.12.104、192.168.12.105、192.168.12.106
ZooKeeper采用一种称为Leader election的选举算法。在整个集群运行过程中,只有一个Leader,其他的都是Follower,如果ZooKeeper集群在运行过程中Leader出了问题,系统会采用该算法重新选出一个Leader。因此,各个结点之间要能够保证互相连接,必须配置映射。修改/etc/hosts,配置映射如下:
192.168.12.104    hadoop1
192.168.12.105     hadoop2
192.168.12.106     hadoop3
ZooKeeper集群启动的时候,会首先选出一个Leader,在Leader election过程中,某一个满足选举算的结点就能成为Leader。整个集群的架构可以参考:http://zookeeper.apache.org/doc/trunk/zookeeperOver.html#sc_designGoals
(2)修改Zookeeper配置文件
如配置一台机器Zookeeper文件配置(这里选hadoop1机器):
cd /opt/zookeeper-3.4.6/conf
拷贝配置文件:cp zoo_sample.cfg zoo.cfg
编辑配置文件:vim zoo.cfg
修改内容:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/home/hadoop/hadoop/zookeeper
clientPort=2181
server.1=hadoop1:2888:3888  
server.2=hadoop2:2888:3888  
server.3=hadoop3:2888:3888
其中:server.x中的x表示改Zookeeper的id,这里hadoop1的id为1,hadoop2的id为2,如下我们就需要配置的其id
(3)远程复制分发安装文件
我这里安装的是hadoop1,分发到hadoop2和hadoop3机器上:
scp -r /opt/zookeeper-3.4.6/ hadoop2:/opt
scp -r /opt/zookeeper-3.4.6/ hadoop3:/opt
(4)设置myid
在我们配置的dateDir指定的目录下面(这里我指定的是/home/hadoop/hadoop/zookeeper),创建一个myid文件,里面内容为一个数字,用来标识当前主机:
级联创建目录:mkdir -p /home/hadoop/hadoop/zookeeper
进入目录:cd /home/hadoop/hadoop/zookeeper
保存数字:echo "1" > myid
其他机器同样,设置不同的id(2和3)
(5)启动Zookeeper集群
在Zookeeper的 每一个节点上都执行Zookeeper的服务脚本:
cd /opt/zookeeper-3.4.6/bin/
./zkServer.sh start
启动后可能会报异常,我启动顺序是hadoop1--->hadoop2--->hadoop3,由于ZooKeeper集群启动的时候,每个结点都试图去连接集群中的其它结点,先启动的肯定连不上后面还没启动的,所以异常前面部分的异常是可以忽略的,通过后面部分可以看到,集群在选出一个Leader后,最后稳定了。
查看日志: cd cd /opt/zookeeper-3.4.6/bin/ 然后:cat zookeeper.out
(6)查看Zookeeper的启动状态,包括谁是leader,哪些是follower
输入:
cd /opt/zookeeper-3.4.6/bin/
./zkServer.sh status

如104查看结果:
[hadoop@hadoop1 bin]$ ./zkServer.sh status
JMX enabled by default
Using config: /opt/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader

105查看结果:
[hadoop@hadoop2 bin]$ ./zkServer.sh status
JMX enabled by default
Using config: /opt/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower

106查看结果:
[hadoop@hadoop3 bin]$ ./zkServer.sh status
JMX enabled by default
Using config: /opt/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower

通过以上可以看到hadoop1是leader,hadoop2和hadoop3是follower
(7)客户端连接测试
另外,可以通过客户端脚本,连接到ZooKeeper集群上。对于客户端来说,ZooKeeper是一个整体(ensemble),连接到ZooKeeper集群实际上感觉在独享整个集群的服务,所以,你可以在任何一个结点上建立到服务集群的连接,例如:
终端输入:
./zkCli.sh -server hadoop1:2181
连接后输入: ls /
显示:
[zk: hadoop1:2181(CONNECTED) 0] ls /
[zookeeper]
当前根路径为/zookeeper
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝壳里的沙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值