news 2026/1/12 12:28:35

【大数据环境安装指南】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/1/11 20:07:18

Bili2text:智能视频转文字工具,让B站内容轻松变成可编辑文本

Bili2text:智能视频转文字工具,让B站内容轻松变成可编辑文本 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 在当今信息爆炸的时代&am…

作者头像 李华
网站建设 2026/1/8 5:26:56

LeetCodeRating终极指南:用周赛难度评分系统提升算法训练效率

LeetCodeRating是一款专为算法学习者和竞赛参与者设计的浏览器插件,通过精准的周赛难度评分系统,帮助用户告别盲目刷题,实现科学高效的算法训练。 【免费下载链接】LeetCodeRating 一款对应力扣的浏览器油猴插件| TamperMonkey | Chrome 项…

作者头像 李华
网站建设 2026/1/11 18:21:44

Linux ps命令查看Miniconda-Python3.11进程详情

Linux ps命令查看Miniconda-Python3.11进程详情 在现代AI开发与数据科学实践中,一个常见的场景是:你在远程服务器上启动了Jupyter Notebook,准备训练模型,但网页端却卡在“Kernel Connecting”状态。你尝试重启服务,却…

作者头像 李华
网站建设 2026/1/10 21:43:41

终极SQLite数据库查看器:浏览器内轻松管理本地数据库文件

终极SQLite数据库查看器:浏览器内轻松管理本地数据库文件 【免费下载链接】sqlite-viewer View SQLite file online 项目地址: https://gitcode.com/gh_mirrors/sq/sqlite-viewer 还在为查看SQLite数据库而烦恼吗?无需安装任何软件,打…

作者头像 李华
网站建设 2026/1/1 21:05:01

Python安装繁琐?用Miniconda-Python3.11镜像5分钟搞定PyTorch

Python环境配置太难?用Miniconda-Python3.11镜像快速部署PyTorch 在高校实验室里,研究生小李正准备复现一篇顶会论文。他兴冲冲地克隆代码仓库,运行pip install -r requirements.txt,结果报错:torchvision 0.15.0 requ…

作者头像 李华
网站建设 2026/1/2 18:54:32

Pubmed文献批量下载神器:告别手动烦恼,效率提升10倍!

Pubmed文献批量下载神器:告别手动烦恼,效率提升10倍! 【免费下载链接】Pubmed-Batch-Download Batch download articles based on PMID (Pubmed ID) 项目地址: https://gitcode.com/gh_mirrors/pu/Pubmed-Batch-Download 还在为逐篇下…

作者头像 李华