zookeeper的简介及全分布式部署

Zookeeper简介

Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目,针对大型分布式系统设计,主要用来解决实际分布式应用场景中存在的一些问题,提供配置维护、名字服务、分布式同步、组服务等功能,在分布式模式下,能够为分布式应用提供高性能和高可靠的协调服务,极大的降低了开发分布式应用的成本。

Zookeeper的架构及特点

在这里插入图片描述
1)Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。
2)集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。
3)全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的。
4)更新请求顺序进行,来自同一个Client的更新请求按其发送顺序依次执行。
5)数据更新原子性,一次数据更新要么成功,要么失败。
6)实时性,在一定时间范围内,Client能读到最新数据。
7)保持leader和flower的数据同步,才能使得Zookeeper保证事务的顺序一致性。

Zookeeper工作原理

在这里插入图片描述
1)Client 向 ZooKeeper 的 Server1 上写数据,发送一个写请求。
2)如果Server1不是Leader,那么Server1 会把接受到的请求进一步转发给Leader,因为每个ZooKeeper的Server里面有一个是Leader。这个Leader 会将写请求广播给各个Server,比如Server1和Server2,各个Server写成功后就会通知Leader。
3)当Leader收到大多数 Server 数据写成功了,那么就说明数据写成功了。如果这里三个节点的话,只要有两个节点数据写成功了,那么就认为数据写成功了。写成功之后,Leader会告诉Server1数据写成功了。
4)Server1会进一步通知 Client 数据写成功了,这时就认为整个写操作成功。ZooKeeper 整个写数据流程就是这样的。

Zookeeper数据模型

在这里插入图片描述
ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一 个ZNode。每一个ZNode默认能够存储1MB的数据,每个ZNode都可以通过路径识别。
Zookeeper中Znode的两种类型:短暂(ephemeral)节点:客户端与服务器端断开连接后,创建的节点自己删除;永久(persistent)节点:客户端与服务器端断开连接后,创建的节点依然存在。
四种形式:持久化节点(Persistent),持久化顺序编号目录节点(Persistent_sequential),临时目录节点(Epherneral),临时顺序编号目录节点(Epherneral_Sequential)。

Zookeeper的应用场景

统一配置管理,统一集群管理,服务器动态上下线,软负载均衡。
(1) Zookeeper在Hbase中的使用。HBase内置了Zookeeper来完成集群的协调。使用Zookeeper,HBase集群中可以启动多个HMaster(HBase的主节点)节点,并且保证只有一个HMaster在运行。
(2) Zookeeper在Hadoop集群中的使用。前面已经介绍过,在Hadoop集群中只能有一个活动的Namenode,为了避免单点故障,通常都要配置NameNode的高可用机制,NameNode的高可用就是使用Zookeeper来实现的。
(3) Zookeeper在YARN高可用中的使用。第4章介绍过YARN自动重启机制和好可用机制都是使用Zookeeper来实现的。

Zookeeper全分布式部署

1、解压zookeeper安装包

链接:https://pan.baidu.com/s/1sczNlJgBvxH5DY2vZsOg9Q
提取码:bvsu

2、创建/usr/local/zookeeper/data
3、配置环境变量
	export ZOOKEEPER_HOME=/usr/local/zookeeper/zookeeper-3.4.6/
	export PATH=$PATH:$ZOOKEEPER_HOME/bin

在这里插入图片描述

4、配置文件
	cd  /usr/local/zookeeper/zookeeper-3.4.6/conf/zoo.cfg
	mv zoo_sample.cfg zoo.cfg
	vim zoo.cfg
	dataDir=/usr/local/zookeeper/data
	server.1=hadoop01:2888:3888
	server.2=hadoop02:2888:3888
	server.3=hadoop03:2888:3888

在这里插入图片描述

5、每台节点添加myid
	$>echo 1 > /usr/local/zookeeper/data /myid
	$>echo 2 > /usr/local/zookeeper/data /myid
 	$>echo 3 > /usr/local/zookeeper/data /myid
非脚本启动

每台节点 zkServer.sh start status查看服务器状态

脚本启动(推荐)
vim zkManger.sh

#! /bin/bash
for host in hadoop1 hadoop2 hadoop3
do
echo "${host}:${1}ing......"
ssh $host "source /etc/profile;/usr/local/zookeeper/zookeeper-3.4.6/bin/zkServer.sh start"
done

给脚本赋予权限:

chmod +x zkManger.sh
jps 查看进程

QuorumPeerMain是zookeeper进程
在这里插入图片描述

查看每台服务器的状态
zkServer.sh status

在这里插入图片描述

注意事项

如果集群上同时安装了Hadoop、Zookeeper,需要注意两者之间有先后启动顺序:
Hadoop——>Zookeeper

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值