ZooKeeper的设计对开发人员来说很友好,但同时也对运维人员友好。当集群越来越大时,管理操作也便得复杂起来,稳妥的管理也变得重要起来。ZooKeeper应该是一个标准的分布式系统组件,一个运维团队可以轻松的学习并管理它。虽说ZooKeeper很容易跑起来,但对于一些配置选项必须牢记在心。你应该很熟悉你的ZooKeeper服务,并使用一些管理工具方便的管理它。
为了让一个ZooKeeper服务正确工作,必须正确的配置好它,只有这样,基于ZooKeeper工作的其他分布式产品才能正常工作。例如,所有的ZooKeeper投票服务器必须拥有一致的配置。这是很多人的经验之谈,不一致的配置是普遍发生的问题的原因。
想要配置得好,需要理解一些基本概念,其实不难掌握,关键是要理解它们是什么,是如何工作的。
本文开始陆续的详细讲解所有的配置选项,大部分配置项一般都有一个默认的值,很多都应该根据实际情况进行优化。因为ZooKeeper的设计很容易使用,有一些在不明白具体的配置项就开始使用,一开始工作得还好,但后续很可能会出问题。所以你需要花些时间来深入学习配置项,你会发现你将可以得到更好的性能,并能更容易的诊断问题。本文会带你了解每个配置项的含义,为什么会需要使用它们。
每一个ZooKeeper进程启动的时候会去读一个名为zoo.cfg的配置文件。担任不同角色(如leader,follower后者observer)的server共享一些基本的配置。在数据目录的myid文件用来区分各个server。每一个数据目录必须是独立的,所以myid文件需要放在数据目录中。myid存放的是server id,用来在配置文件中标识每一个server。当然,如果组建集群的话,每一个server必须有一个自己专属的配置文件。
配置选项一般都在配置文件中设置。每一个选项也可以通过Java system property进行设置,通常以zookeeper.property的形式使用。在启动server的使用使用-D选项来指定。下文中如果可以通过这种方式启动的话,会在圆括号中标明。在配置文件中的选项会比Java system property有更高的优先权。
基本配置
有一些配置选项没有默认值,所以必须配置它们:
clientPort
一个TCP端口,提供client来连接。默认会监听所有的网络接口,除非设置了clientPortAddress配置。这个端口可以随意设置,只要不与其他端口冲突,默认端口为2181.
dataDir和dataLogDir
dataDir目录用来存放快照文件。如果当前的server是集群的一部分,则id文件也放在这个目录。此目录不需要放在一个专用的设备。因为是使用一个后台线程去写这个文件的,不需要锁住放在内存中的data tree,当完成快照之前,写操作的数据不会sync到磁盘(不会落地)。
如果没有设置dataLogDir,事务日志也会放到这个目录。事务日志所在的设备最好是专用的。server会试图对事务日志做顺序的写操作,因为在server对一个事务进行ack之前数据必须sync到磁盘。同一个设备的其他磁盘操作,比如生成快照,会显著的影响写操作,在sync期间把磁盘的磁头调到别的地方去。所以,最佳实践是为事务日志设置一个专用的设备,并把dataLogDir配到这个设备的一个目录上。
tickTime
指明一个tick的长度,单位是毫秒。tick是时间的一个基本度量,它决定了session超时的bucket的size(前文的文章有提过)。
超时时间就是根据以tick为单位进行设置的。这意味着,超时时间的下限就是1个tick的时间,因为最小只能设置为1个tick。最小的cilent的session超时时间是2个tick。
默认的tickTime为3000毫秒。调低这个值会减少超时时间。但是也会引起网络流量(心跳)和CPU时间(session bucket处理)的增加。
相关推荐
1. **复制**:将 Zookeeper 目录复制多份,例如复制成 `zookeeper0`, `zookeeper1`, `zookeeper2`。 2. **配置**:分别对每个副本的 `zoo.cfg` 进行配置,包括添加集群相关参数和修改数据目录、端口号: - `...
1. 首先,通读或观看“从入门到精通”的教程,建立对Zookeeper的基本认知。 2. 掌握Zookeeper的基本操作和API,了解Znode、会话和Watcher的工作原理。 3. 学习Zookeeper在实际项目中的应用案例,如搜索引擎,理解其...
总的来说,这些学习资料提供了从基础到实践的全面理解Zookeeper的途径,对于学习者来说,可以先从文档中了解Zookeeper的基本概念和原理,然后通过阅读网页文章深入理解其在实际项目中的应用,最后结合附件中的示例...
以下是基本配置模板: ```properties # 数据存储目录 dataDir=/var/lib/zookeeper/data # 日志文件路径 dataLogDir=/var/lib/zookeeper/log # 集群中的服务器列表,格式为server.id=host:port:port,id从1开始,...
本文将详细介绍Zookeeper的安装步骤以及基本配置。 **一、Zookeeper的安装** 1. **下载Zookeeper** 首先,你需要从Apache官方网站(http://zookeeper.apache.org/releases.html)下载Zookeeper的最新稳定版本。...
通过这些知识点的学习,我们不仅了解了如何在 Linux 环境下安装配置 zookeeper,并且还掌握了基本的操作命令和数据模型的基础知识。这对于深入理解 zookeeper 的工作原理及应用场景非常有帮助。
### Zookeeper 学习手册知识点概览 #### 1. ZooKeeper 基本概念 - **角色**: - **Leader**:集群中的领导者,负责处理客户端的写请求,并保持集群状态的一致性。 - **Follower**:集群中的跟随者,处理客户端的...
《ZooKeeper学习之运维工具zkweb》 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和...
"第1天视频【瑞客论坛 www.ruike1.com】"可能涵盖ZooKeeper的安装与启动、基本命令的使用以及简单的应用场景示例。观看这个视频,你可以获得ZooKeeper入门的第一手经验,了解如何在本地环境中设置和运行ZooKeeper...
### ZooKeeper配置与简单...通过本篇文章的介绍,我们不仅了解了ZooKeeper的基本功能和架构,还学习了如何在单机模式和伪集群模式下进行配置和使用。希望这些知识点能够帮助大家更好地理解和掌握ZooKeeper的相关知识。
尚硅谷大数据技术之Zookeeper1是关于Apache Zookeeper入门教程的一部分,旨在介绍Zookeeper的基本概念、特点、数据结构、应用场景以及如何在本地模式下进行安装和操作。Zookeeper是一个开源的分布式协调服务,它在...
《Zookeeper学习资料 中篇》 Zookeeper,作为Apache Hadoop的一个子项目,是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作...
- `tickTime`:定义了 Zookeeper 的基本时间单位(以毫秒计)。 - `initLimit`:初始化同步阶段能容忍的 tick 时间数。 - `syncLimit`:心跳检测阶段允许的最大延迟时间(以 tick 为单位)。 - `dataDir`:...
1. **ZNode**:ZooKeeper数据存储的基本单元,类似于文件系统的文件或目录,每个ZNode都有唯一的路径标识。 2. **Watcher**:一种事件触发机制,当ZNode的状态发生改变时,会通知已注册的Watcher。 3. **Session**:...
使用场景及目标:适用于需要管理和维护分布式系统的开发者和技术人员,通过本文的学习可以掌握Zookeeper的基本使用方法及其在配置管理和服务发现方面的具体应用场景。 其他说明:文中详细讲解了Zookeeper的安装配置...
《Zookeeper学习视频》压缩包包含了深入理解与掌握Apache ZooKeeper这一分布式协调服务的重要资源。Zookeeper是一个开源的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈...
《Zookeeper学习资料 下篇》 在Zookeeper的学习过程中,下篇主要涵盖了更深入的理论概念、实战技巧以及常见问题的解决策略。Zookeeper,作为分布式协调服务的基石,广泛应用于大数据、云计算等领域,它的核心功能...
在本地搭建Zookeeper伪集群是开发者在测试和学习Zookeeper时常用的一种方式,它可以让用户在单机环境中模拟多节点集群的工作状态,而无需复杂的网络配置。以下将详细介绍如何进行Zookeeper本地伪集群的搭建。 首先...
- 对于初学者,可以通过官方文档和在线教程学习Zookeeper和JDK的基本用法和配置。 - 进阶学习,可以深入理解Zookeeper的数据模型(如ZNode、Watcher等)以及JDK 7的新特性,同时掌握如何在Linux环境中管理和优化这...
1. 安装与配置:如何正确地安装 Zookeeper,包括修改配置文件、设置环境变量等。 2. 集群部署:如何配置多台机器组成 Zookeeper 集群,包括设置集群 ID、配置文件同步等。 3. 命令行操作:掌握基本的 zkCli.sh 命令...