- 原理
- zookeeper是一个具有高可用性的高性能协调服务
- 模型
- zookeeper维护着一个具有高可用性的树形层次结构
- 树节点被称为znode
- znode可以存储数据
- ACL
- 决定谁可以对它执行何种操作
- 数据访问具有原子性
- 要么读到所有数据要么读取失败
- ACL
- znode通过路径被引用
- 必须是绝对路径,不支持路径解析
- 由Unicode字符串构成
- zookeeper是保留词
- /zookeeper树用来保存管理信息
- 类型
- 短暂znode
- 会话结束后被删除
- 不可以有子节点
- 持久znode
- 短暂znode
- 顺序号
- 递增
- 用于全局排序
- 观察
- znode发生某些变化时,观察机制可以让客户端得到通知。
- znode可以存储数据
- 操作
- create
- delete
- exists
- getACL,setACL
- getChildren
- getData,setData
- sync
- 实现
- standalone
- replicated mode
- 复制模式
- 整个集群被称为集合体
- 通常包含奇数台机器
- 确保对znode树的每一个修改都会被复制到集合体中超过半数的机器上。
- 整个集群被称为集合体
- Zab协议
- 领导选举
- 所有机器通过选择过程选出一台leader领导者
- 其他机器被称为跟随者follower
- 如果领导者出现故障,其余机器会选出另外的领导者,并与之一起继续提供服务。
- 原领导者故障恢复后会成为一个跟随者。
- 半数以上(或指定数量)的跟随者已经将状态与领导者同步,则表明这个阶段完成
- 所有机器通过选择过程选出一台leader领导者
- 原子广播
- 所有的写请求都会被转发给领导者,再由领导者将更新广播给跟随者。
- 半数以上的跟随者将更新持久化后,领导者才会提交这个更新,然后客户端才会收到一个更新成功的响应。
- 领导选举
- 复制模式
- 一致性
- 每个对znode树的更新都被赋予一个全局唯一的ID,称为zxid
- 决定了分布式系统的执行顺序
- 顺序一致性
- 更新会按其发送顺序被提交。
- 原子性
- 第一系统映像
- 持久性
- 及时性
- 每个对znode树的更新都被赋予一个全局唯一的ID,称为zxid
- 会话
- 会话超时
- 滴答tick time
- 服务器越多,会话超时应该设置的越大,连接超时反而越小。
- 有唯一的ID和密码
- 会话超时
- 状态
- connecting
- connected
- closed
- 客户端
- 客户端连接
- bin/zkCli.sh -server 127.0.0.1:2181
- 客户端命令
- ls /
- ls2
- get /
- 客户端连接
- 安装
- 单机
- conf/zoo.cfg
- tickTime=2000 dataDir=/var/lib/zookeeper clientPort=2181
- bin/zkServer.sh start
- 连接zookeeper
- bin/zkCli.sh -server 127.0.0.1:2181
- conf/zoo.cfg
- 集群(复制模式)
- zoo.cfg
- clientPort=2181
- dataDir=/home/myhadoop/zk/data
- server.10=master.hadoop:2888:3888
- server.11=slave1.hadoop:2888:3888
- server.12=slave2.hadoop:2888:3888
- 每台机器分别设置data/myid为其在zoo.cfg下定义的id
- data
- myid
- 10
- myid
- data
- 分别启动
- bin/skServer.sh start
- 查看状态
- bin/zkServer.sh status
- zoo.cfg
- 单机
zookeeper入门综合概要介绍
最新推荐文章于 2023-05-06 19:13:13 发布