大数据系统架构实践(一):Zookeeper集群部署

大数据系统架构实践(一):Zookeeper集群部署

文章目录

  • 大数据系统架构实践(一):Zookeeper集群部署
  • 一、Zookeeper简介
  • 二、部署前准备
  • 三、部署Zookeeper集群
    • 1. 下载并解压安装包
    • 2. 配置zoo.cfg
    • 3. 设置日志目录
    • 4. 集群编号
    • 5. 启动zookeeper集群
    • 5. 验证集群状态
  • 总结


随着微服务架构和分布式系统的快速发展,系统中各个服务之间的协调和状态管理成为架构设计的重要一环。Zookeeper 作为 Apache 生态下的核心组件,提供了高可用的分布式协调服务,在 Hadoop、Kafka、HBase 等大数据平台中都扮演着不可替代的角色。

在本系列中,我们将围绕 Zookeeper 在大数据系统中的作用与部署实践展开介绍。本篇作为第一篇,将聚焦于 Zookeeper 的核心概念、常见应用场景及基础部署方式,为后续深入理解其在分布式架构中的地位打下基础。

一、Zookeeper简介

Zookeeper 是一个开源的分布式协调服务,主要用于维护配置信息、命名服务、分布式同步和集群管理。它的设计初衷是为分布式系统提供一致性保障,并简化复杂的协调任务。
Zookeeper 的 核心特性 包括:

  • 强一致性:所有客户端都能读取到最新的数据状态
  • 原子性:一次操作要么成功,要么失败
  • 顺序性:所有更新按照顺序执行
  • 高可用性:通过集群部署实现故障容错与快速恢复

Zookeeper 使用类 Unix 文件系统的层级数据模型,节点称为 ZNode 。每个 ZNode 都可以存储数据,并可具有子节点。常见节点类型:

  • 持久节点(Persistent)
  • 临时节点(Ephemeral)
  • 顺序节点(Sequential)

这种结构为服务注册、分布式锁、选举等提供了基础。

二、部署前准备

Zookeeper 是一个典型的强一致性系统,采用的是 ZAB(Zookeeper Atomic Broadcast)协议,其核心思想是多数派写成功即认为成功。因此:

  • Zookeeper 集群必须部署在奇数台服务器上(3、5、7…)
  • 最小推荐部署为 3 台节点,此时允许容忍 1 台节点宕机仍可继续提供服务
  • 如果使用 2 台节点,当 1 台挂掉时,剩下的无法形成多数,整个集群将无法写入

因此,3 节点集群在资源和高可用性之间提供了合理平衡,是生产环境中最常见的部署方式。
多数派投票原则:n = 2f + 1,f 是允许容忍的故障节点数量。3 台机器允许 1 台故障,5 台允许 2 台故障。

✅ 三台服务器的配置与角色

节点名称主机名ip地址说明
mastermaster192.168.100.1集群节点之一,参与选举
slave1slave1192.168.100.2集群节点之一,参与选举
slave2slave2192.168.100.3集群节点之一,参与选举

✅ JDK 依赖环境
Zookeeper 是用 Java 编写的,运行前请确保已安装 JDK 1.8 或以上版本

三、部署Zookeeper集群

1. 下载并解压安装包

# 下载地址(以3.4.10版本为例)
https://archive.apache.org/dist/zookeeper/# 解压移动
tar xf zookeeper-3.4.10.tar.gz
mv zookeeper-3.4.10 /usr/local/zookeeper

2. 配置zoo.cfg

cat > /usr/local/zookeeper/conf/zoo.cfg <<-EOF
tickTime=10000  # 心跳时间,ms
dataDir=/usr/local/zookeeper/data  # 数据存储路径
clientPort=2181  # 端口号
initLimit=5  # Follower初始化连接Leader的超时时间限制
syncLimit=2  # Follower与Leader之间同步响应的最大延迟时间
server.1=master:2888:3888  # server.x 对应的是 myid 值
server.2=slave1:2888:3888 
server.3=slave2:2888:3888
maxClientCnxns=1000  # 允许的最大连接数
maxSessionTimeout=300000  # 会话的最大超时时间,ms
EOF

3. 设置日志目录

编辑日志配置文件,指定日志输出目录

mkdir -p /usr/local/zookeeper/logsvim /usr/local/zookeeper/conf/log4j.properties
# 修改如下变量:
# zookeeper.log.dir=/usr/local/zookeeper/logs
# zookeeper.tracelog.dir=/usr/local/zookeeper/logsvim /usr/local/zookeeper/bin/zkEnv.sh
# 设置 ZOO_LOG_DIR=/usr/local/zookeeper/logs

4. 集群编号

每台节点的 myid 是其在 zoo.cfg 中的 server ID,并将目录同步至其他节点

mkdir -p /usr/local/zookeeper/data
echo "3" > /usr/local/zookeeper/data/myid
scp -rp /usr/local/zookeeper root@slave2:/usr/local/  &>/dev/null
echo "2" > /usr/local/zookeeper/data/myid
scp -rp /usr/local/zookeeper root@slave1:/usr/local/  &>/dev/null
echo "1" > /usr/local/zookeeper/data/myid

5. 启动zookeeper集群

# master
/usr/local/zookeeper/bin/zkServer.sh start
# slave1
ssh slave1 "/usr/local/zookeeper/bin/zkServer.sh start"
# slave2
ssh slave2 "/usr/local/zookeeper/bin/zkServer.sh start"

5. 验证集群状态

# 检查端口是否监听
netstat -tnlp | grep 2181
# 查看进程是否正常
ps -ef | grep QuorumPeerMain
# 查看集群状态
/usr/local/zookeeper/bin/zkServer.sh status

总结

🚀 本文介绍了 Zookeeper 的核心概念与应用场景,并基于 3 台服务器完成了 Zookeeper 集群的部署与配置。通过设置 zoo.cfg 配置文件、myid 标识、日志目录和启动脚本,我们搭建了一个基本的高可用协调服务,为后续大数据系统提供稳定的元数据和状态支持。
⚠️ 值得注意的是,Zookeeper 的 Leader 是通过选举产生的,部署过程中不应人为指定具体节点为 Leader 或 Follower,所有节点都是平等参与选举的角色。
📌 当前部署方式适用于 Hadoop、Kafka、HBase 等组件依赖的协调服务环境,是分布式系统架构的基础支撑。
✅ 下一篇文章中,我们将继续构建大数据系统核心组件 —— Hadoop 分布式文件系统(HDFS)与资源调度框架(YARN),并实现其与 Zookeeper 的集成与联动,逐步完善整个大数据平台的底座架构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/910070.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/910070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《道德经》:探寻古老智慧中的哲学之光

我强烈推荐4本可以改变命运的经典著作&#xff1a; 《寿康宝鉴》在线阅读白话文《欲海回狂》在线阅读白话文《阴律无情》在线阅读白话文《了凡四训》在线阅读白话文 《道德经》作为道家经典&#xff0c;短短五千言&#xff0c;却字字珠玑&#xff0c;蕴含着超越时空的哲学智慧。…

科技赋能民生:中建海龙为民生改善注入新动力

在社会发展的进程中&#xff0c;民生改善始终占据着核心地位。住房、基础设施建设等民生领域的进步&#xff0c;直接关系到民众的生活质量与幸福感。中建海龙科技有限公司&#xff08;以下简称“中建海龙”&#xff09;作为建筑行业的创新引领者&#xff0c;凭借其强大的科技实…

BI 赋能,打造数据可视化看板新体验

BI 赋能&#xff0c;打造数据可视化看板新体验 引言 在当今数字化时代&#xff0c;数据成为企业决策的重要依据。如何从海量的数据中提取有价值的信息&#xff0c;并以直观、易懂的方式呈现出来&#xff0c;是企业面临的重要挑战。商业智能&#xff08;BI&#xff09;工具的出…

vue2设置自定义域名跳转

需求&#xff1a;首次登录域名为aa.com&#xff0c;之后登录系统后在系统内某个模块设置三级域名为second&#xff0c;之后退出登录到aa.com,登录进入系统后域名自动变为second.aa.com&#xff0c;最后退出的域名也是second.aa.com&#xff0c;通过不同的域名配置动态的登录页面…

“地标界爱马仕”再拓疆域:世酒中菜联袂赤水金钗石斛定义中国GI

“地标界爱马仕”再拓疆域&#xff1a;世酒中菜联袂赤水金钗石斛&#xff0c;定义中国GI奢侈品新高度 ——中世国际与贵州斛满多战略合作签约仪式在赤水举行 赤水市&#xff0c;2025年5月18日——被誉为“地标界爱马仕”的顶级奢侈品牌世酒中菜 &#xff08;世界酒中国菜全球…

零基础、大白话,Vue3全篇通俗疗法(上):基础知识【看得懂】

前言 最近有个小朋友想了解Vue前端技术&#xff0c;但他只懂一些HTML基础&#xff0c;让我用最简单的方式讲解。于是就有了这篇面向初学者的博文。 老手请绕行&#xff0c;本文专为新手准备。如果发现用词不当的地方欢迎留言指正&#xff0c;觉得对新手有帮助的话请收藏点赞。 …

JavaScript性能优化实战

JavaScript性能优化实战技术文章大纲 性能优化的重要性 解释为什么性能优化对用户体验和业务指标至关重要讨论核心Web指标&#xff08;LCP、FID、CLS&#xff09;与JavaScript性能的关系 代码层面优化 减少DOM操作&#xff0c;使用文档片段或虚拟DOM避免频繁的重绘和回流&a…

考研英语作文评分标准专业批改

考研英语作文专业批改经过官方评分标准严格对标&#xff0c;彻底改变你的作文提升方式&#xff0c;打开 懂试帝小程序 直达批改。 &#x1f3af; 批改服务核心优势 ✨ 官方标准严格对标 完全按照考研英语官方五档评分制&#xff0c;从内容完整性、组织连贯性、语言多样性到语…

智能群跃小助手发布说明

1.初次登陆需要授权码 2.社群维护页面 3.产品营销页面

SAM2论文解读-既实现了视频的分割一切,又比图像的分割一切SAM更快更好

code&#xff1a;https://github.com/facebookresearch/sam2/tree/main demo:https://sam2.metademolab.com/ paper:https://ai.meta.com/research/publications/sam-2-segment-anything-in-images-and-videos/ 这是SAM 这是SAM2 Facebook出品&#xff0c;继SAM在图像上分割…

WPF 的RenderTransform使图标旋转180°

只是记录一下思想&#xff1a; 本来想找两个对称的图标给按钮用&#xff0c;但是另一个找不到&#xff0c;就想到可不可以旋转180实现另一个图标的效果&#xff0c;问了一下DeepSeek&#xff1a; <Path Width"30" Height"30" Margin"1"Data…

Matplotlib 绘图库使用技巧介绍

目录 前言 Matplotlib 简介 快速入门 图形结构解剖 常用绘图函数 子图与布局 单行多列子图&#xff1a; 网格布局&#xff1a; 自定义位置&#xff1a; 样式与标注 中文字体与科学计数 图例、网格、坐标轴 动态图与动画 三维绘图 常见问题与技巧 前言 Matplotli…

【Java基础算法】1.相向指针练习

📘博客主页:程序员葵安 🫶感谢大家点赞👍🏻收藏⭐评论✍🏻 一、两数之和 Ⅱ(167) 1.1 题目介绍 给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 nu…

“开放原子园区行”太原站:openKylin以开源之力,赋能产业发展

在数字化与智能化浪潮驱动下&#xff0c;开源技术已成为全球科技创新与产业升级的核心引擎&#xff0c;并为培育新质生产力开辟关键路径。为加速开源生态建设&#xff0c;赋能区域经济高质量发展&#xff0c;由开放原子开源基金会、山西省工业和信息化厅、山西转型综合改革示范…

【Elasticsearch】自定义相似性算法

在 Elasticsearch 中&#xff0c;可以通过自定义相似度算法来优化搜索结果的相关性。以下是几种常见的自定义相似度算法的方法&#xff1a; 1. 使用内置相似度算法 Elasticsearch 默认使用 BM25 算法&#xff0c;但也可以切换到其他内置的相似度算法&#xff0c;如 TF-IDF 或布…

【对比】DeepAR 和 N-Beats

1. DeepAR 1.1 核心思想 提出者&#xff1a;亚马逊&#xff08;Amazon&#xff09;团队于2018年提出。目标&#xff1a;针对多变量时间序列进行概率预测&#xff08;Probabilistic Forecasting&#xff09;&#xff0c;输出预测值的分布&#xff08;如均值、方差、置信区间&a…

Spring Boot单元测试终极指南:从环境搭建到分层测试实战

Spring Boot测试终极指南&#xff1a;从环境搭建到分层测试实战 掌握MockMvc与分层测试策略&#xff0c;让你的代码质量提升一个维度 一、环境搭建&#xff1a;Maven依赖深度解析 Spring Boot测试的核心依赖在pom.xml中配置如下&#xff1a; <dependencies><!-- 核心…

卷积类型总结

1. 标准卷积 (Convolution) 原理&#xff1a; 一个包含 K 个滤波器的卷积层&#xff08;每个滤波器大小为 FxF x C_in&#xff09;在输入特征图上滑动。在每个位置&#xff0c;滤波器与输入图像的局部区域进行逐元素相乘再求和&#xff08;点积运算&#xff09;&#xff0c;得到…

HP iLO使用实例:Integrated Lights-Out

文章目录 参考名词解释iLODMTF SMASH CLP命令HP提供的命令VSPBIOS启动顺序BIOS指令启动时报的电源错误如果ilo登陆不上去参考 ilo命令 https://support.hpe.com/hpesc/public/docDisplay?docId=c03334058 名词解释 iLO 从字面理解:Integrated Lights-Out,就是整合灯出;…

【前端隐蔽 Bug 深度剖析:SVG 组件复用中的 ID 冲突陷阱】

前端隐蔽 Bug 深度剖析&#xff1a;SVG 组件复用中的 ID 冲突陷阱 创建时间: 2025/6/20 类型: &#x1f50d; Bug 深度分析 难度: ⭐⭐⭐⭐⭐ 高级 关键词: SVG、ID 冲突、Vue 组件、隐蔽 Bug、技术分析 &#x1f4d6; 引言 在前端开发的世界里&#xff0c;有一类 Bug 特别令…