ZooKeeper 教程
ZooKeeper是一种分布式协调服务,用于管理大量主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的体系结构和API解决了这个问题。ZooKeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式性质。
ZooKeeper框架最初是在“Yahoo!”构建的。以轻松,强大的方式访问其应用程序。后来,Apache ZooKeeper成为Hadoop,HBase和其他分布式框架使用的组织服务的标准。例如,Apache HBase使用ZooKeeper来跟踪分布式数据的状态。
本教程介绍了ZooKeeper的基础知识,如何在分布式环境中安装和部署ZooKeeper集群,最后以使用Java编程和示例应用程序的一些示例作为结尾。
本教程是为渴望使用ZooKeeper框架从事大数据分析职业的专业人士准备的。它将使您对如何使用ZooKeeper创建分布式集群有足够的了解。
在继续本教程之前,您必须对Java有足够的了解,因为ZooKeeper服务器在JVM,分布式进程和Linux环境上运行。
分布式应用
分布式应用程序可以在给定时间(同时)在网络中的多个系统上运行,方法是相互协调以快速有效地完成特定任务。通常,分布式应用程序可以使用所涉及的所有系统的计算功能,在几分钟之内完成复杂而费时的任务,这些任务将由非分布式应用程序(在单个系统中运行)花费数小时才能完成。通过将分布式应用程序配置为在更多系统上运行,可以进一步减少完成任务的时间。在其中运行分布式应用程序的一组系统称为“群集”,在群集中运行的每台计算机称为“节点”。
分布式应用程序包含两部分,服务器和客户端应用程序。服务器应用程序实际上是分布式的,并且具有公共接口,以便客户端可以连接到群集中的任何服务器并获得相同的结果。客户端应用程序是与分布式应用程序进行交互的工具。
分布式应用程序的好处
- 可靠性:单个或几个系统的故障不会使整个系统出现故障。
- 可扩展性:通过添加更多机器,并在不停机的情况下对应用程序配置进行少量更改,可以在需要时提高性能。
- 透明度:隐藏系统的复杂性,并显示为单个实体/应用程序。
分布式应用程序的挑战
- 竞争条件:两台或更多台试图执行特定任务的机器,实际上在任何给定时间只需要一台机器即可完成。例如,共享资源只能在任何给定时间由一台机器修改。
- 死锁:两个或多个操作彼此无限期地等待完成。
- 不一致:数据部分失败。
Apache ZooKeeper意味着什么?
Apache ZooKeeper是群集(一组节点)用来在它们之间进行协调并使用可靠的同步技术维护共享数据的服务。ZooKeeper本身就是一个分布式应用程序,提供用于编写分布式应用程序的服务。
- 命名服务:通过名称识别集群中的节点。它类似于DNS,但用于节点。
- 配置管理:加入节点的系统的最新配置信息。
- 集群管理:实时加入/离开集群中的节点以及节点状态。
- 领导者(Leader)选举:为协调目的选举一个节点作为领导者。
- 锁定和同步服务:修改数据时锁定数据。此机制可帮助您在连接其他分布式应用程序(如Apache HBase)时进行自动故障恢复。
- 高度可靠的数据注册表:即使一个或几个节点发生故障,数据的可用性。
分布式应用程序提供了很多好处,但是它们也带来了一些复杂且难以破解的挑战。ZooKeeper框架提供了克服所有挑战的完整机制。竞态条件和死锁使用故障安全同步方法处理。另一个主要缺点是数据不一致,ZooKeeper用原子性解决了这一点。
ZooKeeper的好处
这是使用ZooKeeper的好处:
- 简单的分布式协调流程
- 同步:服务器进程之间的互斥和合作。此过程有助于Apache HBase进行配置管理。
- 有序消息
- 序列化:根据特定规则对数据进行编码。确保您的应用程序始终运行。可以在MapReduce中使用此方法来协调队列以执行正在运行的线程。
- 可靠性
- 原子性:数据传输完全成功或失败,但是没有部分事务。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论