Zookeeper入门简介

什么是Zookeeper?

Zookeeper是一个分布式协调服务,就是为分布式系统提供协调服务
Zookeeper本身也是一个分布式程序
Zookeeper是为别的分布式系统提供服务的
Zookeeper本身也是一个分布式程序(只要有半数以上节点存活,Zookeeper就能对外提供服务)
Zookeeper集群一般都是奇数台节点(Zookeeper内部如果某台服务器出现了宕机,Zookeeper会进行选举,选举的话只要半数节点以上同意的话就可以,所以偶数台的话会浪费资源,不是不可以,是不推荐

说白了,就是一个所有节点服务器的管理员。

Zookeeper的主要角色有两种:leader(管理者)和follower(随从)

Zookeeper的应用场景

(1)节点的动态上下线(节点服务器上线,会在zookeeper注册节点)
(2)高可用、主从选举,解决单点故障(一旦注册节点(active的namenode)出现问题,zookeeper会另一个节点(standby的namenode)的状态修改为active,由ZookeeperFailoverController进行状态修改)
(3)统一配置管理(注册监听,统一配置文件的变化)

HDFS的HA详解

  1. 通过双namenode消除单点故障问题
  2. 日志的存储方式发生了改变(active的namenode(读写权限)生成日志,同时放在第三方文件服务器上(qjournal node:为了防止standby和active的不一样),然后standby的namenode(读权限)去拉取日志(数据备份时间是很快的,不确定namenode什么时候宕机))
  3. 状态切换(zkfc:zookeeper failover controller)管理注册节点。
    状态管理问题:active挂掉,之后zkfc通知Zookeeper删掉active的节点,然后选举。
    但是active可能会出现假死状态,此时就会发生脑裂现象(brain split)
    防止脑裂的机制:
    1、直接kill掉原来的active(ssh kill -9 namenode)
    2、ssh响应超时,则调用用户自定义脚本/root/kill.sh,脚本返回状态码为0通知namenode状态切换active

Zookeeper的数据模型类似一个文件系统,不同的是它的每个节点拥有它自己或者它的子节点相关联的数据。
Zookeeper的目录树中每个节点对应一个Znode。每个Znode维护着一些属性,比如:当前版本、数据版本、修改时间等
znode有两种类型:短暂的(断开连接删除自己) 持久的(断开连接不删除自己)

yarn的高可用则不同,resourcemanager(active)挂掉之后删除注册节点,然后其他节点(都可以设置standby)去注册,谁注册上谁就是active

Zookeeper选举机制

在Zookeeper启动的时候会进行投票选举leader,以下2中情况会当选leader

  • 数据版本(新的)
逻辑时钟(要保持一致,如果有小的加入进来,选举leader之后会重新选举)比如 ,在选举过程中启动了新的服务器,Zookeeper会对比逻辑时钟,不同的话会重新进行选举。
  • ID号(大的)
    配置注意
    高可用集群、hbase都需要依赖zookeeper,所有,如果是这两种情况之一,需要配置zookeeper的conf路径
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值