欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

zookeeper的简介及全分布式部署

程序员文章站 2022-03-03 09:24:41
Zookeeper简介Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目,针对大型分布式系统设计,主要用来解决实际分布式应用场景中存在的一些问题,提供配置维护、名字服务、分布式同步、组服务等功能,在分布式模式下,能够为分布式应用提供高性能和高可靠的协调服务,极大的降低了开发分布式应用的成本。Zookeeper的架构及特点1)Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。2)集群中只要有半数以上节点存活,Zookeeper集...

Zookeeper简介

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

Zookeeper的架构及特点

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

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的简介及全分布式部署
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

zookeeper的简介及全分布式部署

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

zookeeper的简介及全分布式部署

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进程
zookeeper的简介及全分布式部署

查看每台服务器的状态

zkServer.sh status

zookeeper的简介及全分布式部署

注意事项

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

本文地址:https://blog.csdn.net/z7634057957/article/details/110499851

相关标签: Hadoop zookeeper