Zookeeper (Hadoop 权威指南)

一. ZooKeeper 组成员管理应用

假设有一组服务器用户为客户端提供某种服务。我们希望每个客户端能找到其中一台服务器,这样他们就可以使用这项服务。在这个例子中,一个挑战是如何维护这组服务器觉得成员列表。

这组服务器的成员列表显然不能存储在网络中的单个节点上,否则该节点的故障将意味着整个系统的故障(我们希望这个成员列表时高度可用的)。我们先假设已经有了一种可靠的方法来解决成员列表的存储问题。接下来,如果其中有一台服务器出现故障,我们需要解决如何从服务器成员列表将它删除的问题。某个进程需要来负责删除故障服务器,但注意不能由故障服务器自己来完成,因为故障服务器已经不再运行!

我们描述的不是一个被动的分布式数据结构,而是一个主动的,能够在某个外部事件发生时发生修改数据项状态的数据结构,ZooKeeper 提供给了这种服务。


1.1 ZooKeeper 中的组成员关系

理解ZooKeeper 的一种方式就是将其看成一个具有高可用性特征的文件系统。这个文件系统中没有文件和目录。而是统一使用“节点”(node) 的概念,称为 znode 。znode 既可以作为保存数据的容器(如同文件),也可以作为保存其他 znode 的容器(目录)。所有的 znode 构成了一个层次化的命名空间,一种自然的建立组成员列表的方式就是利用这种层次结构, 创建一个以组名为节点名的 znode 作为父节点,然后以组成员(服务器名)为节点名来创建作为子节点的 znode。如下图所示:

这里写图片描述

在这个实例中,我们没有在任何 znode 中存储数据,但在一个真实的应用中,你可以想象将成员相关的数据存储在它们的 znode 中,例如主机名。


1.2 ZooKeeper 提供的操作

  • 创建组
  • 加入组
  • 列出组成员
  • 删除组



二. ZooKeeper 服务

ZooKeeper 是一个具有高可用性的高性能协调服务。下面将从三个方面来了解这个服务:模型操作实现


2.1 数据模型

1. ZooKeeper 维护这一个树形层次结构
树中的节点被称为 znode。znode 可以用于存储数据,并且有一个与之相关联的 ACL。ZooKeeper 被设计来实现协服务(这类服务通常使用小数据文件),而不是用于大容量数据存储,因此一个 znode 能存储的数据被限制在 1 MB 以内。

2. ZooKeeper 的数据访问具有原子性
客户端在读取一个 znode 的数据时,要么读到所有的数据,要么读操作失败,不会只读到部分数据。同样,一个写操作将替换 znode 存储的所有数据。ZooKeeper 会保证写操作不成功就失败,不会出现部分写之类的情况,也就是说不会存在只保存客户端所写部分数据的情况。ZooKeeper 不支持添加操作。这些特征都输与 HDFS 所不同的。HDFS 被设计用于大容量数据存储,支持流式数据访问和添加操作。

3. znode 通过路径被引用
想 Unix 中的文件系统路径一样,在 ZooKeeper 中路径被表示成用斜杠分割的 Unicode 字符串。与 Unix 中的文件系统路径不同的是,ZooKeeper 中的路径必须是绝对路径,也就是说每条路径必须从一个斜杠字符开始。此外,所有的路径表示必须是规范的,即每条路径只有唯一的一种表示方法,不支持路径解析,例如在 Unix 中,一个具有路径 /a/b 的文件也可以通过路径 /a/./b 来表示。原因在于 “.” 在 Unix 的路径中表示当前目录。在 ZooKeeper 中 “.” 不具备这样的特殊含义,这样表示的路径名是不合法的。

在 ZooKeeper 中,路径由 Unicode 字符串构成,并且有一些限制,字符串 “zookeeper ” 是一个保留词,不能将它作为路径表示中的一部分。需要注意的是,Zookeeper 使用 /zookeeper 子树来保存管理信息,例如关于配额的信息。


2.1.1 短暂的znode

znode 有两种类型:短暂的和持久的。znode 的类型在创建时被确定并且之后不能再修改。在创建短暂 znode 的客户端会话结束时,Zookeeper 会将将短暂的 znode 删除。相比之下,持久 znode 不依赖与客户端会话,只有当客户端(不一定是

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
  本书从hadoop的缘起开始,由浅入深,结合理论和实践,全方位地介绍hado叩这一高性能处理海量数据集的理想工具。全书共14章,3个附录,涉及的主题包括:haddoop简介:mapreduce简介:hadoop分布式文件系统;hadoop的i/o、mapreduce应用程序开发;mapreduce的工作机制:mapreduce的类型和格式;mapreduce的特性:如何安装hadoop集群,如何管理hadoop;pig简介:hbase简介:zookeeper简介,最后还提供了丰富的案例分析。   本书是hadoop权威参考,程序员可从中探索如何分析海量数据集,管理员可以从中了解如何安装与运行hadoop集群。   什么是谷歌帝国的基石?mapreduce算法是也!apache hadoop架构作为mapreduce算法的一种开源应用,是应对海量数据的理想工具。项目负责人tomwhite透过本书详细阐述了如何使用hadoop构建可靠、可伸缩的分布式系统,程序员可从中探索如何分析海量数据集,管理员可以从中了解如何安装和运行hadoop集群。   本书结合丰富的案例来展示如何用hadoop解决特殊问题,它将帮助您:    ·使用hadoop分布式文件系统(hdfs)来存储海量数据集,   通过mapreduce对这些数据集运行分布式计算    ·熟悉hadoop的数据和ilo构件,用于压缩、数据集成、序列化和持久处理    ·洞悉编~mapreduce实际应用时的常见陷阱和高级特性    ·设计、构建和管理一个专用的hadoop集群或在云上运行hadoop    ·使用高级查询语言pig来处理大规模数据    ·利用hadoop数据库hbase来保存和处理结构化/半结构化数据    ·学会使用zookeeper来构建分布式系统   如果您拥有海量数据,无论是gb级还是pb级,hadoop都将是您的完美解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值