2、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

 

快来成为我的朋友或合作伙伴,一起交流,一起进步!
QQ群:961179337
微信:lixiang6153
邮箱:lixx2048@163.com
公众号:IT技术快餐
更多资料等你来拿!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

贝壳里的沙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值