一、认识zookeeper
(1)ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper包含一个简单的原语集,提供Java和C的接口。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在$zookeeper_home\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。
(2)ZooKeeper的基本运转流程:
1、选举Leader。
2、同步数据。
3、选举Leader过程中算法有很多,但要达到的选举标准是一致的。
4、Leader要具有最高的执行ID,类似root权限。
5、集群中大多数的机器得到响应并接受选出的Leader。
二、zookeeper的安装
1、下载地址
官网:
https://zookeeper.apache.org/
2、上传到安装包存放目录
3、解压到待安装目录
tar -xvf zookeeper-3.4.14.tar.gz -C /opt/module/
4、配置
(1)进入conf,重命名 zoo_sample.cfg
mv zoo_sample.cfg zoo.cfg
(2)修改zoo.cfg
(3)在zookeeper根目录创建data zkData
mkdir data
cd data
mkdir zkData
(4)在zkData创建文件myid并编辑
(5)将zookeeper复制到其他两台机器
scp -r zookeeper-3.4.14/ root@hadoop102:/opt/module/
scp -r zookeeper-3.4.14/ root@hadoop103:/opt/module/
(6)修改02和03的myid,改为2和3
(7)3台启动zookeeper
bin/zkServer.sh start
(8)查看状态:
bin/zkServer.sh status
(9)配置Hadoop的core-site.xml,添加zookeeper的地址
<!--执行zookeeper地址-->
<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
注意:
若zookeeper查看状态报错:
1 检查是否创建data目录
2 检查conf/zoo.cfg文件中是否配置了正确的数据缓存路径(data文件夹位置)
3 检查data中是否创建了myid文件,其内容是否正确
4 检查conf/zoo.cfg文件中是否配置了服务/投票/选举端口,形式为:
5 是否关闭了防火墙(需要关闭,或者开放相关端口)
永久关闭:
systemctl stop firewalld.service 停止
systemctl disable firewalld.service 禁止开机启动
6 检查data目录下是否有*.pid文件,若有将其全部删除
rm -rf *.pid
7 重启系统(若以上六步完成还不成功,此步为绝望中的挣扎)