概念
ZooKeeper是一个分布式开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。
zookeeper的安装
1、检查jdk是否安装好,如果没有安装,就实现安装jdk
2、将zookeeper-3.4.6.tar.gz上传到linux
3、将zookeeper放在/opt/modules/app目录下,并解压
tar -zxvf zookeeper-3.4.6.tar.gz /opt/modules/app/
解压后重命名为zookeeper
mv zookeeper-3.4.6.tar.gz zookeeper
4、修改配置
路径为:/opt/modules/app/zookeeper/conf/
1、复制zoo_example.cfg改名为zoo.cfg
cp zoo_sample.cfg zoo.cfg
2、修改zoo.cfg
zoo.cfg配置3、创建zkdata文件夹
在root目录下创建一个zkdata文件夹,为数据存储文件的位置
5、配置资源目录
在/etc/profile文件中
追加以下内容
export ZK_HOME=/opt/modules/app/zookeeper
export PATH=$PATH:$ZK_HOME/bin
source一下
source /etc/profile
检查是否配置成功
echo $ZK_HOME
出现以下内容就配置成功了:
image.png
6、启动zookeeper
启动zookeeper并且查看是否启动成功
1、启动zookeeper
zkServer.sh start
2、查看zookeeper状态
zkServer.sh status
3、停止zookeeper
zkServer.sh stop
image.png
7、存在问题
1、防火墙未关闭
1、临时关闭(开机启动防火墙)
service iptables stop
iptables:清除防火墙规则: [确定]
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:正在卸载模块: [确定]
2、永久关闭(开机不启动防火墙)
chkconfig iptables off
2、地址被占用
使用命令查看日志
cat zookeeper.out
如果出现了java.net.BindException: Address already in use
地址被占用,那么先查看是否被占用,占用了则杀死进程再启动,建议去/root/zkdata下删除zookeeper_server.pid。
image.png
zookeeper的集群
zookeeper的集群也需要事先安装好jdk,先准备三个纯净版的linux
1、修改zoo.cfg
在前面的基础上,追加三个server
server.1=192.168.159.133:2888:3888
server.2=192.168.159.130:2888:3888
server.3=192.168.159.134:2888:3888
image.png
注:2888是leader与follower之间通信的端口,3888是投票使用的端口(数字不做要求,但应避免冲突)。
2、将配置好的apps下的zookeeper传到另外两台linux
分别复制到两个主机
scp -r /opt/modules/app/zookeeper hadoop4:/opt/modules/app/
3、设置myid
三个虚拟机在各自的root下创建zkdata文件夹,再创建myid文件设置值
举例hadoop3(第一个主机)
echo 1 > myid
注意:myid里面设置的值一定要与配置文件里设定的一致。
4、分别启动三个虚拟机
一个leader两个follower
image.png
网友评论