1.概述
ZooKeeper(动物园管理员),顾名思义,是用来管理Hadoop(大象)、Hive(蜜蜂)、Pig(小猪)的管理员,同时Apache HBase、Apache Solr、LinkedIn Sensei等众多项目中都采用了ZooKeeper。
ZooKeeper曾是Hadoop的正式子项目,后发展成为Apache顶级项目,与Hadoop密切相关但却没有任何依赖。它是一个针对大型应用提供高可用的数据管理、应用程序协调服务的分布式服务框架,基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,提供的功能包括:配置维护、统一命名服务、状态同步服务、集群管理等。
在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在某些应用中使用,因此需要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。Zookeeper的目的就在于此。
2.特征
- ZooKeeper是简单的:ZooKeeper的核心是一个精简文件系统,它提供一些简单的操作和一些额外的抽象操作,例如:排序和通知。
- ZooKeeper是富有表现力的:ZooKeeper的原语操作是一组构件(building block),可用于实现很多协调数据结构和协议,例如:分布式队列、分布式锁和一组同级节点中的leader选举(leader election)。
- ZooKeeper具有高可用性:ZooKeeper运行在集群上,被设计成具有较高的可用性,因此应用程序可以完全依赖它。ZooKeeper可以帮助系统避免出现单点故障,从而构建一个可靠的应用。
- ZooKeeper采用松耦合交互方式:在ZooKeeper支持的交互过程中,参与者之间不需要彼此了解。例如:ZooKeeper可以被用作一个rendezvous机制,让进程在不了解其他进程或网络状况的情况下能够彼此发现并进行交互。参与协调的各方甚至可以不必同时存在,因为一个进程在ZooKeeper中留下一条消息,在该进程结束后,另外一个进程还可以读取这条消息。
- ZooKeeper是一个资源库:ZooKeeper提供了一个关于通用协调模式实现和方法的开源共享存储库,能使程序员免于编写这类通用的协议。所有人都能够对这个资源库进行添加和改进,随着时间的推移,会使每个人都从中收益。
- ZooKeeper是高性能的:在它的诞生地Yahoo!公司,对于以写为主的工作负载来说,ZooKeeper的基准吞吐量已超过每秒10000个操作;对于常规的以读为主的工作负载来说,吞吐量更是高出好几倍。
参考文章:
1. http://blog.csdn.net/liuxinghao/article/details/42747625;
2. https://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/;
3. http://www.searchtb.com/2011/01/zookeeper-research.html;