zookeeper 基础知识记要

zookeeper 就是做分布式一致性

1.产生背景
任务 100个节点 集群
分布式情景下 如何实现数据一致性?
一致性:
强一致性:
写入什么 就读到什么
例如:从任意一个节点写入数据 其他节点读取到写入后的数据
集群中只有一个节点 一致性最强的 集群中节点个数越多 强一致性越难保证
弱一致性:
写入什么 尽量保证读到什么
不保证最终读取的结果一定对的
最终一致性:
弱一致性的特殊情况
允许一定的时间延迟的

是什么:
zookeeper 就是做分布式一致性

来源:
paxos 过半选举
zookeeper 是paxos算法的最完美的实现
(注:Paxos 算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点执行相同的操作序列,那么他们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。一个通用的一致性算法可以应用在许多场景中,是分布式计算中的重要问题。因此从20世纪80年代起对于一致性算法的研究就没有停止过。节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing)。Paxos 算法就是一种基于消息传递模型的一致性算法。)

分布式算法  演变:
	CAP 
		c:强一致性  一个节点
		a:高可用性   节点越多可用性越高
		p:机架策略  
		实验环境下
	base:
		c-- 最终一致性   a :基本可用

2.安装
安装版本:
3.4.10
安装准备:
jdk1.8
安装节点:
最好是奇数台 至少3台 3-11
安装步骤:
1)上传
2)解压
tar -xvzf zookeeper-3.4.10.tar.gz
3)配置环境变量
export ZOO_HOME=/home/hadoop/app/zookeeper-3.4.10
export PATH= P A T H : PATH: PATH:ZOO_HOME/bin

source /etc/profile

4)修改zookeeper配置文件
/home/hadoop/app/zookeeper-3.4.10/conf
mv zoo_sample.cfg zoo.cfg

The number of milliseconds of each tick 每次心跳的时间间隔

tickTime=2000

The number of ticks that the initial

synchronization phase can take 初始化 接受的心跳次数

initLimit=10

The number of ticks that can pass between

sending a request and getting an acknowledgement 发送请求 接受响应 5次心跳

syncLimit=5

the directory where the snapshot is stored. 快照存储目录

zookeeper的核心文件存储目录 快照目录:存储每一个节点的id

do not use /tmp for storage, /tmp here is just

example sakes.

dataDir=/home/hadoop/data/zookeeperdata

the port at which the clients will connect

clientPort=2181

the maximum number of client connections.

increase this if you need to handle more clients

#maxClientCnxns=60

绑定节点 和 id

server.id = 主机:2888:3888 一行一个节点

server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888

zk中每一个节点都会有一个id int 0-255 便于投票使用
同一个集群中 不同节点的id 不可重复

hadoop01 1
hadoop02 2
hadoop03 3

5)添加id文件
/home/hadoop/data/zookeeperdata 下创建文件名myid的文件
myid存储当前节点的id
myid 不要有多余的空格 也不要有多余的换行符

6)远程发送zk的安装包 其他节点
scp -r zookeeper-3.4.10 hadoop02:/home/hadoop/app/
scp -r zookeeper-3.4.10 hadoop03:/home/hadoop/app/

sudo scp /etc/profile hadoop02:/etc/
sudo scp /etc/profile hadoop03:/etc/
source /etc/profile

7)到hadoop02 hadoop03 创建 myid文件
先创建目录

8)启动
注意:启动之前一定保证防火墙关闭的 时间同步的
三个节点都要执行
启动hadoop01
zkServer.sh start

21698 QuorumPeerMain  zookeeper的进程
有这个进程 不代表启动成功
验证启动成功  zk的状态
zkServer.sh status
Error contacting service. It is probably not running.

启动hadoop02
zkServer.sh start
Mode: leader

hadoop01上  
Mode: follower

启动hadoop03
zkServer.sh start
Mode: follower

3.全新集群的选主
zookeeper的架构:
主 leader
从 follower

启动顺序 和 myid 有关

启动顺序 hadoop01–1 —》 hadoop02—2 —》 hadoop03—3
1)hadoop01启动,找集群中的leader,发现没有leader,发起选主,但是集群中只有一个节点 他自己, 这个时候hadoop01 就将选票投给自己,这时候hadoop01获取1票,没有过半,选主失败,这个时候hadoop01的状态 无状态(It is probably not running)
2)hadoop02启动,找集群中的leader,发现没有leader,发起选主,集群中有hadoop01–1 hadoop02—2,每个节点开始投票,zk内部规定id小的节点强制将自己的票投给id大的,hadoop01 —id=2 hadoop02—id=2,id=2(hadoop02)获取两票,已经过半了,hadoop02就是选举的leader , hadoop01 就主动的将自己的状态切为follower
3)hadoop03启动,找集群leader,发现集群中已经有leader,主动将自己的状态切为follower

(未完)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值