ITPub博客

首页 > 大数据 > Hadoop > zookeeper初探

zookeeper初探

原创 Hadoop 作者:541732025 时间:2014-03-12 19:59:48 0 删除 编辑
统一命名空间


在zookeeper里面,所有节点都称为znode,znode作用:
1,存放数据,上限是1M
2,ACL(access control list)访问控制列表,哪个客户端可以访问该节点
权限            允许的操作
CREATE       create(子节点)
READ          getChildren
                  getData
WRITE         setData
DELETE       delete(子节点)
ADMIN        setACL

zookeeper中的数据模型
短暂znode:当客户端访问时创建,当客户端断掉连接,znode将删掉,生存周期仅仅为客户端与zookeeper服务器的一次连接里面
持久znode:
顺序号:在创建znode时在名称后面追加一个唯一的编号
观察:在节点上放一个观察,当节点改变状态时会通知客户端

使用zookeeper构建应用
1,配置服务
在zookeeper的树形结构中,保存着集群的各种配置,每个客户端在有配置的znode上放一个watch,当一个客户端的配置修改后,它会对zookeeper的znode进行修改(setData),znode就会通知在此放有watch的其它客户端进行setData,这样就同步了配置更新

2,分布式锁

指定一个作为锁的znode,用它来描述被锁的实体,称为leader,然后希望获取锁的客户端创建一些短暂顺序znode,作为leader的子节点,任何时候,顺序号小的客户端将持有锁,客户端释放锁,或者客户端进程死亡,对应的短暂znode将会被删除,然后紧跟的下一个顺序号的客户端将持有锁,通过创建一个关于leader删除的watch,可使客户端在获得锁时得到通知。

羊群效应
在以上实现过程中,当节点发生变化,所有客户端都会得到通知,尝试获取锁,会对zookeeper服务器造成压力,为了避免这种情况,需要优化通知,仅仅只有前一个顺序号的子节点消失时才会通知下一个客户端,而不是删除(或者创建)任何子节点时都需要通知。例如在上图中,只有lock-2消失时才需要通知lock-3对应的客户端,lock-1消失或者有新的子节点加入时,不需要通知lock-3。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28912557/viewspace-1109690/,如需转载,请注明出处,否则将追究法律责任。

上一篇: Hbase初探
下一篇: Hbase建模
请登录后发表评论 登录
全部评论

注册时间:2013-05-23

  • 博文量
    127
  • 访问量
    481941