理解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成功


发布了43 篇原创文章 · 获赞 6 · 访问量 5万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览