一、zookeeper介绍
直接翻译官网的What is zookeeper。
Zookeeper是一个关于 配置信息,命名,提供分布式同步和集群service的一站式服务。所有的这些服务或者(他们)别的表现形式经常在应用于分布式系统中。每一次去实现他们,都不可避免的花费大量的工作去修复bugs和(调整)竞争条件。因为实现这类服务很难,所以在一开始就要谨慎的对待他们。否则他们将变得很脆弱和难以管理! 即使正确的完成了,这些服务的不同实现,仍然可能导致部署后维护的复杂性。
我的水平只能翻译成这样了,原文比较古怪。
原文地址:http://zookeeper.apache.org/
二、配置和安装
点击这里下载安装包,我采用的是最新的3.4.6,是一个stable版本。
安装方式采取伪分布式部署。即在同一台机器上部署多个节点。安装过程比较简单。多台机器也同理。
1.把下载下来的安装包放在/opt/shencl/zookeeper/目录下,tar -zxvf 解压,改名 zookeeper-3.4.6_0。
2. 复制一份zoo_sample.cfg,命名为zoo.cfg。编辑zoo.cfg,我们准备部署3个节点,所以加入如下配置,
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/opt/shencl/zookeeper/data/data0
dataLogDir=/opt/shencl/zookeeper/log/log0
clientPort=2180
server.0=127.0.0.1:2888:3888
server.1=127.0.0.1:2889:3889
server.2=127.0.0.1:2890:3890
参数解释:
tickTime: 客户端和服务端或者服务端多个节点之间维持心跳的时间间隔,单位毫秒。
initLimit:服务端节点初始化时,相互通信的等待时间。一个单位就是tickTime的值。
syncLimit:服务端节点之间同步数据的间隔时间。一个单位就是tickTime的值。
dataDir: 数据文件存放目录。
dataLogDir:用来重做数据的事务日志文件存放目录。
clientPort:给客户端连接的端口。
server.0,server.1,server.2表示节点编号,后边用冒号隔开的三个数字,分别表示节点的ip,交换数据的端口号,某个节点挂掉之后专门用来选举的端口号。
注:initLimit,syncLimit在单节点部署模式下,不需要配置。
3. 在dataDir目录下创建myid文件,写入该节点的编号 0 。这样一个节点就配置完成了。
4.复制 zookeeper-3.4.6_0 到 zookeeper-3.4.6_1和 zookeeper-3.4.6_2,要修改的地方是 zoo.cfg里的 dataDir,dataLogDir,clientPort。还有需要在自己的data目录下新建myid文件,写入自己的编号。
最终的目录结构如下:
三、启动和测试
分别进入三个节点的bin目录,启动zookeeper,运行./zkServer.sh start。
注:前边节点启动的时候,会抛出一些错误,可忽略。这是因为另外的节点没启动,导致的通信异常。
可以用自带的基于telnet的客户端测试一下,看看是否启动成功。随便进入一个节点的bin目录,比如节点0
./zkCli.sh -server 127.0.0.1:2180,随便输入一个字符,他会跳出help界面。说明服务端启动成功。
比较重要的有ls, get,set,create,delete等等,path参数必须以/开头。留意create命令的 acl参数(Access Control权限控制)和set命令的 version参数
我们用create命令创建一个znode /testnode , 然后ls,发现已经创建成功了!
可以连上另外两个节点server.1 和 server.2 (在这里仅需要换一下端口) 观察, 发现数据已经被同步过来了,也已经有/testnode了。如下图
再看看set和get命令,把他的值改成 iwantchangemynode
可以看到不但数据改过来了,dataVersion也已经是1了(计数器从0开始)
aclVersion仍然还是0,因为我并没有修改acl的类型。
此外zookeeper记录下来的数据还有node的 各种zxid(ZooKeeper Transaction Id),以及ctime,mtime等等。
四、总结
可以看到,zookeeper仅仅是维护了一个分布式的树形目录。如下图。它通过fast paxos算法保证多个节点上znode的数据一致性。一套zookeeper可以同时给多个应用程序使用,只需要隔离好各自的path~。在生产环境中,多个程序,比如hadoop,hbase,strom共用一套zookeeper也是常事。结构如下图。
zookeeper仅仅维护了一份目录树,那他又是如何支持Leader election、Shared lock、Queue这些牛x哄哄的功能呢?
请看下篇 zookeeper学习之二(高级特性)
本文参考:
http://www.cnblogs.com/haippy/archive/2012/07/23/2603583.html
http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/
http://www.blogjava.net/BucketLi/archive/2010/12/21/341268.html
http://coolxing.iteye.com/blog/1871009
相关推荐
《ZooKeeper学习之运维工具zkweb》 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和...
Curator客户端是Apache Curator框架的一部分,该框架为开发人员提供了一系列高级API和工具,用于处理常见的ZooKeeper用例,降低了使用ZooKeeper的复杂性。以下是对Curator客户端及其主要特性的详细阐述: 1. **连接...
最后,ZooKeeper的一致性保证和Leader选举(系列之十)是其核心特性之一。ZooKeeper通过 zab(ZooKeeper Atomic Broadcast)协议保证了强一致性,而Leader选举则是ZooKeeper集群中实现高可用性的关键过程,确保即使...
本资源包提供的是Zookeeper和HBase在Windows 10环境下的安装指南及对应的二进制安装包,非常适合Hadoop初学者进行学习和实践。 **Zookeeper** 是一个分布式的,开放源码的协调服务,它为分布式应用提供了高可用性、...
在之前的一个《Java学习之SpringBoot整合SSM Demo》分享中说到搭建ZooKeeper和Dubbo分布式框架中遇到了一些技术问题没能成功,只分享了其中的一个中间产物,那就是大家看到的《Java学习之SpringBoot整合SSM Demo》...
ZooKeeper 学习笔记 ZooKeeper 是一个开源的分布式协调服务,由 Hadoop 的创始人 Doug Cutting 等人开发。它为分布式应用提供了一个高效、可靠的协调机制,帮助开发者快速构建高可用、可扩展的分布式系统。 ...
尚硅谷大数据技术之Zookeeper1是关于Apache Zookeeper入门教程的一部分,旨在介绍Zookeeper的基本概念、特点、数据结构、应用场景以及如何在本地模式下进行安装和操作。Zookeeper是一个开源的分布式协调服务,它在...
在“尚硅谷大数据技术之Zookeeper.doc”文档中,详细介绍了Zookeeper的架构原理,包括服务器角色(如follower、leader和observer)、Zookeeper的数据模型(如ZNode和路径)、会话机制以及Zookeeper的操作命令等。...
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和性能高效、功能稳定的系统提供给用户。...
#### 一、Zookeeper简介 Zookeeper是一个分布式的、开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和性能高效、...
Zookeeper 安装部署基本操作 本节课程主要讲解 Zookeeper 的安装部署基本操作,包括 ...通过学习这些内容,我们可以更好地理解 Zookeeper 的安装部署过程,并更好地使用 Zookeeper 来管理和维护我们的服务配置中心。
ZooKeeper,作为一款开源的分布式协调服务,是Apache软件基金会的重要项目之一。它为大型分布式系统提供高效、可靠的命名服务、配置管理、集群同步以及分布式锁等功能,是构建云原生应用不可或缺的组件。本资源包含...
Zookeeper 3.4.12 版本是其稳定且广泛使用的版本之一,为开发者提供了可靠的工具来解决分布式系统中的复杂问题。 1. **Zookeeper 架构** ZooKeeper 的架构基于客户端-服务器模型。每个 ZooKeeper 集群由多个服务器...
4. **Watcher**:Zookeeper的核心特性之一,允许客户端注册Watcher来监听特定ZNode的变更,一旦ZNode发生变化,Watcher就会被触发,通知客户端。 5. **命令行工具**:Zookeeper提供了`zkCli.sh`(在Linux环境下)或...
Zookeeper 3.4.8是其稳定版本之一,为用户提供了高效、可靠的分布式协调服务。本文将深入探讨Zookeeper的核心特性、工作原理以及在实际应用中的关键知识点。 一、Zookeeper的核心特性 1. **一致性模型**:...
总的来说,Zookeeper作为一款强大的分布式协调服务,是构建大规模分布式系统的基石之一。掌握其基本原理和使用方法,对解决分布式环境中的诸多挑战至关重要。通过不断实践和学习,你将能够更好地利用Zookeeper来优化...
它是大数据领域的核心技术之一,与Hadoop、HBase和Solr等大数据组件有紧密的联系。 Zookeeper的版本在不断地更新和迭代,文档中提到的最新版本是3.4.5,但作者主要针对3.3.5版本进行了深入研究,文档中的内容也是...