1.zookeeper是什么?
1.zookeeper是一个分布式协调服务
的开源框架
2.zookeeper主要用来解决分布式集群中应用程序的一致性问题
--------例如:脏读问题
3.zookeeper本质上是一个分布式的小文件存储系统
4.zookeeper提供基于类似文件系统的目录树方式存储数据
5.zookeeper用来维护
和监控
存储的数据状态变化
2.zookeeper的特性?
1.zookeeper:一个领导者(Leader),多个跟随着(Follower)组成的集群
2.集群中只要有半数以上节点存活,zookeeper集群就能正常服务
3.全局数据一致性
:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的
4.可靠性
:如果消息被其中一台服务器接收,那么将被所有服务器接收
5.更新请求顺序执行
,来自同一个Client的更新请求按其顺序依次执行
6.数据更新原子性
:一次数据更新要么成功,要么失败,不存在中间状态
7.实时性
:保护客户端在一定事件间隔内获取服务器的更新信息
3.zookeeper的分布式环境?
1.上传压缩包值software
2.解压压缩包至module
tar -axvf zookeeper-3.4.10.tar.gz -C /opt/module
3.修改配置 conf下
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
修改内容----
dataDir=/opt/module/zookeeper-3.4.10/zkData
增加内容---
##############cluster################
server.1=hadoop101:2888:3888
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
4.创建zkData的文件夹 zookeeper-3.4.10下
mkdir zkData
5.在文件夹内创建myid
vim myid
添加内容--
添加id ,根据配置里的内容根据主机名添加对应的id
6.同步到其余的节点上
rsync -av zookeeper-3.4.10 jinghang@hadoop102:/opt/module
6.分别启动zookeeper
bin/zkServer.sh start
7.查看状态
bin/zkServer.sh status
6.启动客户端
bin/zkCli.sh
4.zookeeper的节点类型?
1.持久(Persistent):客户端和服务器端断开连接后,创建的节点不删除
2.短暂(Ephemeral):客户端和服务器端断开连接后,创建的节点自己删除
5.zookeeper的shell命令(增、删、改、查、观察者、其他)![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/767d27dc74fac0e1abeb47dc74a0c994.png)
6.zookeeper的选举机制?
半数机制:集群中半数以上机器存活,集群可用,所以zookeeper适合安装奇数台服务器
(1)服务器1启动,发起一次选举。服务器1投自己一票。此时服务器1票数一票,不够半数以上(3票),选举无法完成,服务器1状态保持为LOOKING;
(2)服务器2启动,再发起一次选举。服务器1和2分别投自己一票并交换选票信息:此时服务器1发现服务器2的ID比自己目前投票推举的(服务器1)大,更改选票为推举服务器2。此时服务器1票数0票,服务器2票数2票,没有半数以上结果,选举无法完成,服务器1,2状态保持LOOKING
(3)服务器3启动,发起一次选举。此时服务器1和2都会更改选票为服务器3。此次投票结果:服务器1为0票,服务器2为0票,服务器3为3票。此时服务器3的票数已经超过半数,服务器3当选Leader。服务器1,2更改状态为FOLLOWING,服务器3更改状态为LEADING;
(4)服务器4启动,发起一次选举。此时服务器1,2,3已经不是LOOKING状态,不会更改选票信息。交换选票信息结果:服务器3为3票,服务器4为1票。此时服务器4服从多数,更改选票信息为服务器3,并更改状态为FOLLOWING;
(5)服务器5启动,同4一样当小弟。