ZooKeeper 配置管理Hadoop集群

举报
Smy1121 发表于 2019/06/20 18:12:50 2019/06/20
【摘要】 ZooKeeper 提供了一系列 API编程接口,这些API接口非常简单,就像一个可提供强一致性保证的分布式小文件系统。

ZooKeeper 客户端设计

ZooKeeper API

ZooKeeper 提供了一系列 API编程接口,这些API接口非常简单,就像一个可提供强一致性保证的分布式小文件系统。其具体的接口如下所示:

String create (path, data, acl, flags);    //创建一个znode

void delete (path, expectedVersion);  //删除一个znode

Stat setData (path, data, expectedVersion);  //向znode里面写数据

byte[] getData (path, watch);    //从znode获取数据

Stat exists (path, watch);    //判断znode是否存在

String[] getChildren (path, watch);    //获取znode的子目录

void sync (path);    //同步接口


Zookeeper Watcher

Watcher是ZooKeeper中的一个核心功能。它可以监控目录节点的数据变化以及子目录的变化;一旦状态发生变化,服务器就会通知所有设置在这个目录节点上的Watcher。


Watcher基本特点

1)一次设置对应一次触发。

2)异步触发。

3)如果设置多个Watcher,顺序触发。


设置观察的操作如下所示:

exists getChildren getData


触发观察的操作如下所示:

create delete setData


写操作与内部事件对应关系

下面的表格中,第一列的写操作与第二列的事件相对应。

image.png


Watcher与内部事件对应关系

Watcher与内部事件对应关系,如下表格所示:image.png

image.png


写操作与Watcher对应关系

写操作与Watcher对应关系,如下表格所示:

image.png


ZooKeeper配置管理

下面是一个ZooKeeper配置实例:

image.png


那么ZooKeeper到底是如何工作的呢?下面我们来分析它的工作流程:

1、比如这里有三个节点,每个节点都有一个相同的配置文件conf。

2、ZooKeeper正常工作需要编写两个东西分别为ConfigUpdater和ConfigWatcher,然后在这三个节点上分别装上ConfigWatcher。

3、ConfigWatcher会监听znode的/conf目录,znode保存了实际要更新的文件信息。

4、当需要更新文件的时候,就调用ConfigUpdater这个组件,向znode重新写入数据,更新/conf目录下对应的Data,这里可以调用setData()API来操作。

5、ConfigWatcher是观察者、订阅者,当文件更新之后,ZooKeeper会广播给ConfigWatcher的各个节点。这三个节点收到广播后,会读取znode中对应的数据,写到自己相应的目录里面,然后就生效了。


ConfigUpdater设计

ConfigUpdater代码如下所示:

image.png


Watcher设计

Watcher代码如下所示:

image.png


以上设计代码只是为大家示例分析,更多详情和实例请大家自己查看,这里不做过多介绍~~






推荐

华为开发者空间发布

让每位开发者拥有一台云主机

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。