ZooKeeper是一种分布式协调服务,用于管理大型主机。 在分布式环境中协调和管理服务是一个复杂的过程。 ZooKeeper通过其简单的架构和API解决了这个问题。 ZooKeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。
ZooKeeper框架最初是在“Yahoo!"上构建的,用于以简单而稳健的方式访问他们的应用程序。 后来,Apache ZooKeeper成为Hadoop,HBase和其他分布式框架使用的有组织服务的标准。 例如,Apache HBase使用ZooKeeper跟踪分布式数据的状态。
在进一步移动之前,重要的是我们知道关于分布式应用程序的一两件事情。 因此,让我们开始讨论,快速概述分布式应用程序。
分布式应用可以在给定时间(同时)通过在它们自己之间协调以快速和有效的方式完成特定任务而在网络中的多个系统上运行。 通常,通过使用所有涉及的系统的计算能力,分布式应用可以在几分钟内完成非分布式应用(在单个系统中运行)需要数小时完成的复杂和耗时的任务。
通过将分布式应用程序配置为在更多系统上运行,可以进一步减少完成任务的时间。 其中运行分布式应用的一组系统称为集群,并且在集群中运行的每个机器被称为节点。
分布式应用程序有两部分, Server 和 Client 应用程序。 服务器应用程序实际上是分布式的,并具有通用接口,以便客户端可以连接到集群中的任何服务器,并获得相同的结果。 客户端应用程序是与分布式应用程序交互的工具。
可靠性 - 单个或几个系统的故障不会使整个系统出现故障。
可扩展性 - 可以通过添加更多机器,在应用程序配置中进行微小更改而不增加停机时间,从而提高性能。
透明 - 隐藏系统的复杂性,并将其显示为单个实体/应用程序。
种族条件 - 两个或多个机器尝试执行特定任务,实际上只需在任何给定时间由单个机器完成。 例如,共享资源只能在任何给定时间由单个机器修改。
死锁 - 两个或多个操作等待互相无限期完成。
不一致 - 数据部分失败。
Apache ZooKeeper是由集群(节点组)使用的一种服务,用于在自身之间协调并使用鲁棒同步技术维护共享数据。 ZooKeeper本身是一个分布式应用程序,提供用于编写分布式应用程序的服务。
ZooKeeper提供的常见服务如下 :
命名服务 - 按名称标识集群中的节点。 它类似于DNS,但是对于节点。
配置管理 - 加入节点的系统的最新和最新的配置信息。
集群管理 - 实时加入/退出集群中的节点和节点状态。
选举算法 - 选择节点作为协调目的的leader。
锁定和同步服务 - 在修改数据时锁定数据。 此机制可帮助您在连接其他分布式应用程序(如Apache HBase)时进行自动故障恢复。
高度可靠的数据注册表 - 即使一个或几个节点关闭时数据的可用性。
分布式应用程序提供了很多好处,但它们也提出了一些复杂和难以克服的挑战。 ZooKeeper框架提供了一个完整的机制来克服所有的挑战。使用故障安全同步方法来处理比赛条件和死锁。 另一个主要缺点是数据的不一致性,ZooKeeper使用原子性解析。
这里有使用ZooKeeper的好处 :
简单分布式协调过程
同步 - 服务器进程之间的相互排斥和协作。 此过程有助于Apache HBase进行配置管理。
订购的邮件
序列化 - 根据特定规则对数据进行编码。 确保应用程序始终运行。 这种方法可以在MapReduce中使用来协调队列以执行运行的线程。
可靠性
原子性 - 数据传输成功或完全失败,但没有事务处理。