理解Zookeeper

Zookeeper在yarn和hdfs中的HA

     zookeeper会对ResourceManager和NameNode节点相关进程进行监控,他们之间一直在通信,当zookeeper发现RM和NM挂掉的时候,就会通过选举的方式选举另外一个节点对外提供服务,把standby改为active

分布式锁
Zookeeper是一个分布式协调服务。这样我们就可以利用Zookeeper来协调多个分布式进程之间的活动。比如在一个分布式环境中,为了提高可靠性,我们的集群的每台服务器上都部署着同样的服务。但是,一件事情如果集群中的每个服务器都进行的话,那相互之间就要协调,编程起来将非常复杂。而如果我们只让一个服务进行操作,那又存在单点。通常还有一种做法就是使用分布式锁,在某个时刻只让一个服务去干活,当这台服务出问题的时候锁释放,立即fail over到另外的服务。这在很多分布式系统中都是这么做,这种设计有一个更好听的名字叫Leader Election(leader选举)。比如HBase的Master就是采用这种机制。但要注意的是分布式锁跟同一个进程的锁还是有区别的,所以使用的时候要比同一个进程里的锁更谨慎的使用。

zookeeper通过协议可以保证在同一个路径下只有一个相同的文件,创建znode节点只有一个能成功,谁创建成功谁就是active状态,standby不对外提供服务.但是他们对外提供同一命名空间


Zookeeper中写操作流程的用处

当Active状态的Namenode元数据发生改变时,Active NameNode 的EditLog 日志文件写入共享的JournalNode(ZooKeeper集群中)中,只要超过一半写入成功,Zookeeper就会认为它写成功了,其它节点会同步更新日志文件,然后呢,standy NameNode 就开始读取这个日志文件,保存与Active NameNode信息同步,一旦Active NameNode挂掉了,另外一个有着同样元数据信息的NameNode会启动,对外提供服务。

datanode向active和standby状态的NameNode都提交请求,但是只有active的NameNode的才能向journalnode中写数据.standby只能从journalnode中读数据

journalnode一般也是奇数个,客户端写数据时,元数据写到journalnode(类似于一种小集群),超过一半成功,NameNode才返回给client成功


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值