news 2026/4/18 1:49:39

【大数据环境安装指南】Zookeeper单机环境和集群环境搭建

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【大数据环境安装指南】Zookeeper单机环境和集群环境搭建

文章目录

  • 前言
  • 一、Zookeeper简介
  • 二、部署前置条件
  • 三、单机环境搭建(开发 / 测试)
    • 3.1 创建数据 / 日志目录
    • 3.2 修改配置文件
    • 3.3 启动并验证单机 ZooKeeper
      • 3.3.1 启动服务
      • 3.3.2 检查状态
      • 3.3.3 客户端连接测试
      • 3.3.4 停止 / 重启服务
  • 四、集群环境搭建(生产用,3 节点示例)
    • 4.1 所有节点执行前置准备
    • 4.2 所有节点修改 zoo.cfg 配置
    • 4.3 每台节点创建 myid 文件(核心!)
    • 4.4 启动集群并验证
    • 4.5 集群停止 / 重启

前言

部署环境:

  • 操作系统:Centos 7、Rocky 9 、Kylin V11
  • Zookeeper版本:3.8.4
  • jdk版本:8

一、Zookeeper简介

Zookeeper 由 Apache 进行维护,是一个开源的分布式协调服务, 可以实现分布式系统中常见的发布/订阅、负载均衡、命令服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。具有如下特性:

  • 顺序一致性:从一个客户端发起的事务请求,最终都会严格按照其发起顺序被应用到 Zookeeper 中;
  • 原子性:所有事务请求的处理结果在整个集群中所有机器上都是一致的;不存在部分机器应用了该事务,而另一部分没有应用的情况;
  • 单一视图:所有客户端看到的服务端数据模型都是一致的;
  • 可靠性:一旦服务端成功应用了一个事务,则其引起的改变会一直保留,直到被另外一个事务所更改;
  • 实时性:一旦一个事务被成功应用后,Zookeeper 可以保证客户端立即可以读取到这个事务变更后的最新状态的数据。

二、部署前置条件

1、服务器已安装 JDK(ZooKeeper 依赖 Java,推荐 JDK 8)

java-version# 确认输出 1.8.x 版本

如未安装jdk,可参考详细安装教程:【大数据环境安装指南】 JDK安装

2、下载 ZooKeeper 安装包(推荐稳定版 3.8.x)

# 下载(也可手动下载上传到服务器)wgethttps://archive.apache.org/dist/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz# 解压指定目录tar-zxvfapache-zookeeper-3.8.4-bin.tar.gz-C/usr/local/app/# 重命名(简化路径)mvapache-zookeeper-3.8.4-bin /usr/local/app/zookeeper

官方下载地址:https://archive.apache.org/dist/zookeeper/

3、集群环境额外要求

  • 至少 3 台服务器(奇数台,推荐 3/5 台),且服务器之间能互相 ping 通、无防火墙拦截 2181/2888/3888 端口;
  • 所有服务器的 JDK 版本一致,时间同步(可通过 ntpdate 同步时间)。

三、单机环境搭建(开发 / 测试)

3.1 创建数据 / 日志目录

# 创建数据存储目录和日志目录mkdir-p/usr/local/app/zookeeper/datamkdir-p/usr/local/app/zookeeper/logs

3.2 修改配置文件

ZooKeeper 的核心配置文件是 zoo.cfg,需从模板复制并修改:

# 进入配置目录cd/usr/local/app/zookeeper/conf# 复制模板配置cpzoo_sample.cfg zoo.cfg# 编辑配置文件vimzoo.cfg

修改后的核心配置如下(保留关键项,注释无关项):

# 1. 心跳间隔(毫秒),ZooKeeper 基本时间单位tickTime=2000# 2. 初始化连接时,客户端与服务器之间的心跳次数(tickTime * initLimit = 10秒)initLimit=5# 3. 集群环境下,Leader 与 Follower 之间的心跳超时时间(这里单机可保留)syncLimit=2# 4. 数据存储目录(必填,对应步骤1创建的目录)dataDir=/usr/local/app/zookeeper/data# 5. 日志存储目录(可选,建议配置,避免日志和数据混放)dataLogDir=/usr/local/app/zookeeper/logs# 6. 客户端连接端口(默认 2181,需确保未被占用)clientPort=2181# 7. 最大客户端连接数(默认不限,可注释)# maxClientCnxns=60

3.3 启动并验证单机 ZooKeeper

3.3.1 启动服务

# 进入 bin 目录cd/usr/local/app/zookeeper/bin# 启动 ZooKeeper(前台启动:zkServer.sh start;后台启动:zkServer.sh start-foreground)./zkServer.sh start

3.3.2 检查状态

./zkServer.sh status

3.3.3 客户端连接测试

# 本地连接 ZooKeeper./zkCli.sh-serverlocalhost:2181

连接成功后进入 ZooKeeper 命令行,执行简单操作验证:

# 创建节点create /test"hello zookeeper"# 读取节点数据get /test# 输出:hello zookeeper(表示正常)# 退出客户端quit

3.3.4 停止 / 重启服务

# 停止./zkServer.sh stop# 重启./zkServer.sh restart

四、集群环境搭建(生产用,3 节点示例)

以 3 台服务器为例(节点信息如下,需替换为你的实际 IP / 主机名):

节点IP 地址主机名(可选)
节点 1192.168.3.129node1
节点 2192.168.3.130node2
节点 3192.168.3.131node3

4.1 所有节点执行前置准备

1、每台节点都安装 JDK、解压 ZooKeeper 安装包(同单机环境);
2、每台节点创建数据 / 日志目录:

mkdir-p/usr/local/app/zookeeper/datamkdir-p/usr/local/app/zookeeper/logs

3、每台节点配置主机名映射(可选,方便集群通信):

# 编辑 /etc/hosts,添加以下内容(所有节点一致)192.168.3.129 node1192.168.3.130 node2192.168.3.131 node3

4、关闭防火墙 / 开放端口(所有节点):

# 临时关闭防火墙(测试用)systemctl stop firewalld# 永久开放端口(生产用)firewall-cmd --add-port=2181/tcp--permanent# 客户端连接端口firewall-cmd --add-port=2888/tcp--permanent# 集群节点通信端口firewall-cmd --add-port=3888/tcp--permanent# 选举端口firewall-cmd--reload

4.2 所有节点修改 zoo.cfg 配置

cd/usr/local/app/zookeeper/confcpzoo_sample.cfg zoo.cfgvimzoo.cfg

修改后的配置如下(所有节点一致):

tickTime=2000initLimit=10syncLimit=5# 数据/日志目录(所有节点一致)dataDir=/usr/local/app/zookeeper/datadataLogDir=/usr/local/app/zookeeper/logs# 客户端连接端口clientPort=2181# 集群节点配置(格式:server.编号=主机名:通信端口:选举端口)server.1=node1:2888:3888server.2=node2:2888:3888server.3=node3:2888:3888# 启用自动清理日志(可选,避免日志过大)autopurge.snapRetainCount=3autopurge.purgeInterval=1

4.3 每台节点创建 myid 文件(核心!)

myid 文件放在 dataDir 目录下,内容为节点的编号(对应 zoo.cfg 中 server.编号):

  • 节点 1(node1):
echo"1">/usr/local/app/zookeeper/data/myid
  • 节点 2(node2):
echo"2">/usr/local/app/zookeeper/data/myid
  • 节点 3(node3):
echo"3">/usr/local/app/zookeeper/data/myid

4.4 启动集群并验证

1、依次启动所有节点的 ZooKeeper

# 每台节点执行启动命令cd/usr/local/app/zookeeper/bin ./zkServer.sh start

2、检查每台节点的状态

./zkServer.sh status

正常结果

  • 其中一台节点显示 Mode: leader(主节点);
  • 另外两台显示 Mode: follower(从节点)。
    ❌ 若显示 Mode: standalone 或 Error contacting service:检查 myid 文件、zoo.cfg 配置、端口是否开放。

3、客户端连接集群测试

# 连接集群(指定任意节点即可)./zkCli.sh-servernode1:2181,node2:2181,node3:2181# 创建测试节点create /zk-cluster"hello zk cluster"# 读取节点数据get /zk-cluster# 输出:hello zk cluster(表示集群正常)

4、集群容错测试
停止 leader 节点,观察集群是否重新选举新 leader:

# 在 leader 节点执行停止命令./zkServer.sh stop# 在任意 follower 节点检查状态,会发现新的 leader 产生./zkServer.sh status

4.5 集群停止 / 重启

# 每台节点停止./zkServer.sh stop# 每台节点重启./zkServer.sh restart
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 1:49:24

QQ音乐解码器完整教程:轻松解锁加密音乐文件

QQ音乐解码器完整教程:轻松解锁加密音乐文件 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你是否曾经下载…

作者头像 李华
网站建设 2026/4/18 1:46:07

Keil5添加文件技巧分享:提升STM32编译效率

Keil5文件管理实战:一套让STM32编译效率翻倍的工程技巧你有没有遇到过这样的场景?刚接手一个别人的Keil项目,打开后满屏红色感叹号——“File not found”;或者修改了一个头文件,结果整个工程从头开始重新编译&#xf…

作者头像 李华
网站建设 2026/4/16 15:27:23

emwin与Modbus通信结合:项目实例

emWin与Modbus通信融合实战:打造工业级HMI终端在现代工控设备开发中,一个常见的需求是——既要本地能看、能操作,又要远程可连、可管。换句话说,用户希望在设备现场通过触摸屏实时监控运行状态,同时系统又能接入现有的…

作者头像 李华
网站建设 2026/4/11 23:49:49

E-Hentai图库批量下载终极方案:三步搞定完整压缩包

E-Hentai图库批量下载终极方案:三步搞定完整压缩包 【免费下载链接】E-Hentai-Downloader Download E-Hentai archive as zip file 项目地址: https://gitcode.com/gh_mirrors/eh/E-Hentai-Downloader 还在为E-Hentai图库逐张保存而烦恼吗?现在有…

作者头像 李华
网站建设 2026/4/7 15:05:08

Anaconda下载安装包太大?Miniconda-Python3.11仅10MB起步

Miniconda-Python3.11:轻量级Python环境管理的现代实践 你有没有经历过这样的场景?在实验室或远程服务器上,想快速跑一个数据科学项目,却发现网络缓慢、磁盘空间紧张,而 Anaconda 动辄 500MB 以上的安装包让人望而却步…

作者头像 李华
网站建设 2026/3/29 22:40:45

终极指南:HexFiend十六进制编辑器在macOS上的完整使用教程

终极指南:HexFiend十六进制编辑器在macOS上的完整使用教程 【免费下载链接】HexFiend A fast and clever hex editor for macOS 项目地址: https://gitcode.com/gh_mirrors/he/HexFiend 在处理二进制文件时,你是否曾遇到这些问题:传统…

作者头像 李华