作者:马士华 发表于:2008-08-20 16:27 最后更新于:2008-08-20 16:27 版权声明:可以任意转载,转载时请务必以超链接形式标明文章 原始出处和作者信息。 http://www.hadoop.org.cn/hadoop/what-is-hadoop-zookeeper/
很高兴得看到Yahoo捐献的Zookeeper已经从sourceforge迁移到Apache,并成为Hadoop的子项目.那么ZooKeeper是什么呢?Zookeeper是Google的Chubby一个开源的实现.是高有效和可靠的协同工作系统.Zookeeper能够用来leader选举,配置信息维护等.在一个分布式的环境中,我们需要一个Master实例或存储一些配置信息,确保文件写入的一致性等.Zookeeper能够保证如下3点:
- Watches are ordered with respect to other events, other watches, and
asynchronous replies. The ZooKeeper client libraries ensures that everything is dispatched in order.
- A client will see a watch event for a znode it is watching before seeing the new data that corresponds to that znode.
- The order of watch events from ZooKeeper corresponds to the order of the updates as seen by the ZooKeeper service.
在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据.如果在创建znode时Flag设置 为EPHEMERAL,那么当这个创建这个znode的节点和Zookeeper失去连接后,这个znode将不再存在在Zookeeper 里.Zookeeper使用Watcher察觉事件信息,当客户端接收到事件信息,比如连接超时,节点数据改变,子节点改变,可以调用相应的行为来处理数 据.Zookeeper的Wiki页面展示了如何使用Zookeeper来处理事件通知,队列,优先队列,锁,共享锁,可撤销的共享锁,两阶段提交.
那么Zookeeper能帮我们作什么事情呢?简单的例子:假设我们我们有个20个搜索引擎的服务器(每个负责总索引中的一部分的搜索任务)和一个 总服务器(负责向这20个搜索引擎的服务器发出搜索请求并合并结果集),一个备用的总服务器(负责当总服务器宕机时替换总服务器),一个web的 cgi(向总服务器发出搜索请求).搜索引擎的服务器中的15个服务器现在提供搜索服务,5个服务器正在生成索引.这20个搜索引擎的服务器经常要让正在 提供搜索服务的服务器停止提供服务开始生成索引,或生成索引的服务器已经把索引生成完成可以搜索提供服务了.使用Zookeeper可以保证总服务器自动 感知有多少提供搜索引擎的服务器并向这些服务器发出搜索请求,备用的总服务器宕机时自动启用备用的总服务器,web的cgi能够自动地获知总服务器的网络 地址变化.这些又如何做到呢?
- 提供搜索引擎的服务器都在Zookeeper中创建znode,zk.create("/search/nodes/node1",
"hostname".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateFlags.EPHEMERAL);
- 总服务器可以从Zookeeper中获取一个znode的子节点的列表,zk.getChildren("/search/nodes", true);
- 总服务器遍历这些子节点,并获取子节点的数据生成提供搜索引擎的服务器列表.
- 当总服务器接收到子节点改变的事件信息,重新返回第二步.
- 总服务器在Zookeeper中创建节点,zk.create("/search/master", "hostname".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateFlags.EPHEMERAL);
- 备用的总服务器监控Zookeeper中的"/search/master"节点.当这个znode的节点数据改变时,把自己启动变成总服务器,并把自己的网络地址数据放进这个节点.
- web的cgi从Zookeeper中"/search/master"节点获取总服务器的网络地址数据并向其发送搜索请求.
- web的cgi监控Zookeeper中的"/search/master"节点,当这个znode的节点数据改变时,从这个节点获取总服务器的网络地址数据,并改变当前的总服务器的网络地址.
在我的测试中:一个Zookeeper的集群中,3个Zookeeper节点.一个leader,两个follower的情况下,停掉leader,然后两个follower选举出一个leader.获取的数据不变.我想Zookeeper能够帮助Hadoop做到:
Hadoop,使用Zookeeper的事件处理确保整个集群只有一个NameNode,存储配置信息等. HBase,使用Zookeeper的事件处理确保整个集群只有一个HMaster,察觉HRegionServer联机和宕机,存储访问控制列表等.
Zookeeper Doc:
zookeeper.pdf
Zookeeper Video:
|
分享到:
相关推荐
ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能...
Zookeeper是一种为分布式应用提供一致性服务的协调系统,它原本是Hadoop项目下的一个子项目,但现在已经成为Apache的顶级项目。Zookeeper的用途和使用场景很多,可以用于实现分布式应用的同步、配置管理、分组、命名...
Zookeeper由雅虎创建并贡献给Apache基金会,现已成为Apache顶级项目,广泛应用于Hadoop、HBase、Kafka等分布式系统中。 **一、Zookeeper的主要功能** 1. **命名服务**:提供全局唯一的名字服务,例如服务注册与...
在Hadoop源码分析中,我们能看到这些Google技术的影子,例如Chubby和ZooKeeper,GFS和HDFS,BigTable和HBase,MapReduce和Hadoop。通过对比这些技术,学习者可以更容易地把握Hadoop的设计思路。 Hadoop源码复杂且...
Java中的ZooKeeper是一个分布式协调服务,由Apache Hadoop项目开发,主要用于解决大规模分布式系统中的命名服务、配置管理、集群同步等问题。它提供了一种基于分布式数据一致性模型的树状数据结构,使得多个应用程序...
Zookeeper是Apache Hadoop项目下的一个子项目,它是一个分布式的,开放源码的分布式应用程序协调服务,是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和...
Zookeeper是Apache Hadoop项目下的一个子项目,它是一个分布式的,开放源码的分布式应用程序协调服务,是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和...
2. Hadoop相关子项目:包括但不限于Hive、Pig、HBase等,这些项目扩展了Hadoop的功能,提供了对特定类型数据的处理能力。 3. 数据集成工具:例如Sqoop和Flume,用于在Hadoop与外部数据源之间高效地传输数据。 4. ...
2. **节点管理**: 支持创建、删除、修改Zookeeper中的节点,以及设置节点的权限和Watchers。 3. **数据查看与编辑**: 可以查看任意节点的数据内容,同时支持直接编辑和提交更改,方便调试和配置。 4. **会话与...
Zookeeper是Apache Hadoop项目下的一个子项目,它是一个分布式的,开放源码的分布式应用程序协调服务,是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和...
Hadoop生态包括众多相关工具和项目,如HBase(分布式数据库)、Hive(数据仓库工具)、Pig(数据分析平台)、Spark(快速、通用的大数据处理引擎)和Zookeeper(分布式协调服务)。这些组件共同构建了一个全面的数据...
Zookeeper是Apache Hadoop项目下的一个子项目,它是一个分布式的,开放源码的分布式应用程序协调服务,是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和...
Zookeeper是Apache Hadoop的一个子项目,主要提供分布式协调服务,而Dubbo则是阿里巴巴开源的高性能Java RPC框架,常用于实现微服务架构中的服务治理。在这个"zookeeper和dubbo简单例子"中,我们将探讨如何利用Maven...
- **配置管理**:分布式应用的配置可以集中存储在Zookeeper中,方便管理和更新。 - **集群管理**:通过Zookeeper实现集群的节点发现和服务注册与发现,例如Hadoop、Kafka等项目。 - **分布式锁**:利用...
Zookeeper是Apache Hadoop项目下的一个子项目,它是一个分布式的,开放源码的分布式应用程序协调服务。作为一款高效、可靠的分布式协调框架,Zookeeper在分布式环境中扮演着至关重要的角色,尤其在解决一致性问题上...
5. **选举算法**:在Zookeeper中,基于Paxos算法的Leader选举是其稳定运行的关键。在Zookeeper-3.4.6版本中,这个过程更加高效和稳定。 Zookeeper的架构由多个Server节点组成,每个节点都包含数据存储和服务处理,...