Hadoop 分布式集群实战 2—— Hadoop 高可用架构

发布时间:2026/10/27 23:06:53

Hadoop 分布式集群实战 2—— Hadoop 高可用架构 1 HDFS‑HA 核心组件2 台 NameNodeActive NameNode对外处理客户端读写唯一写元数据Standby NameNode热备不接收客户端请求实时同步元数据故障时升级为 ActiveJournalNode 集群JN奇数3 台起步共享存储保存edits编辑日志。Active 把修改写入 JN 集群Standby 持续读取 JN 的 edits在内存回放保持元数据同步腾讯云。Quorum 机制写入超过半数 JN 成功才算写成功容忍半数以下节点故障。ZooKeeper 集群奇数负责选主、故障检测保存分布式锁防止脑裂同一时刻只允许一个 Active。ZKFCZKFailoverController每个 NameNode 节点上都要跑一个 ZKFC 进程三个职责①健康检测监控本机 NameNode 是否存活②和 ZK 交互抢锁竞选 Active③故障隔离 (fence)旧 Active 故障卡死SSH 远程杀死旧 NN 进程防止脑裂。DataNode同时向两台 NameNode 汇报块信息不管谁是 Active 都上报。IP主机名角色192.168.40.141server1NameNode / DFSZKFailoverController / ResourceManager192.168.40.142server2JournalNode / QuorumPeerMain / DataNode / NodeManager192.168.40.143server3JournalNode / QuorumPeerMain / DataNode / NodeManager192.168.40.144server4JournalNode / QuorumPeerMain / DataNode / NodeManager192.168.40.145server5NameNode / DFSZKFailoverController / ResourceManager2 部署2.1 虚拟机准备新开虚拟机server5[rootserver5 ~]# useradd hadoop# 还是要保证 uid 和 gid 与其他节点相同[rootserver5 ~]# yum install -y nfs-utils[rootserver5 ~]# mount 192.168.40.141:/home/hadoop/ /home/hadoop/2.2 ZooKeeper 集群部署上传安装包并解压[hadoopserver1 hadoop]$ sbin/stop-all.sh[hadoopserver1 hadoop]$cd[hadoopserver1 ~]$tarzxf apache-zookeeper-3.8.6-bin.tar.gz集群配置[hadoopserver2 ~]$cdapache-zookeeper-3.8.6-bin/conf/[hadoopserver2 conf]$cpzoo_sample.cfg zoo.cfg[hadoopserver2 conf]$vimzoo.cfg各节点配置文件相同此处的server.1并不是指 server1下一步需要在/tmp/zookeeper目录中创建 myid 文件写入一个唯一的数字取值范围在1-255。编号1/2/3对应每台节点 myid 文件里面的数字数字和机器一一对应三台机器分别生成 myid编号 1、2、3和zoo.cfg里面server.1 server.2 server.3一一对应并且要删除/tmp下的文件目的是清除旧残留数据防止和 HA 模式自动生成的元数据、日志冲突[hadoopserver2 conf]$rm-rf/tmp/*[hadoopserver2 conf]$mkdir/tmp/zookeeper[hadoopserver2 conf]$echo1/tmp/zookeeper/myid[hadoopserver3 ~]$rm-rf/tmp/*[hadoopserver3 ~]$mkdir/tmp/zookeeper[hadoopserver3 ~]$echo2/tmp/zookeeper/myid[hadoopserver4 ~]$rm-rf/tmp/*[hadoopserver4 ~]$mkdir/tmp/zookeeper[hadoopserver4 ~]$echo3/tmp/zookeeper/myid在各节点启动服务[hadoopserver2 conf]$cd..[hadoopserver2 apache-zookeeper-3.8.6-bin]$ bin/zkServer.sh start[hadoopserver2 apache-zookeeper-3.8.6-bin]$ bin/zkServer.sh statusserver2 的角色是 follower[hadoopserver3 ~]$cdapache-zookeeper-3.8.6-bin/[hadoopserver3 apache-zookeeper-3.8.6-bin]$ bin/zkServer.sh start[hadoopserver3 apache-zookeeper-3.8.6-bin]$ bin/zkServer.sh statusserver3 的角色是 leader[hadoopserver4 ~]$cdapache-zookeeper-3.8.6-bin/[hadoopserver4 apache-zookeeper-3.8.6-bin]$ bin/zkServer.sh start[hadoopserver4 apache-zookeeper-3.8.6-bin]$ bin/zkServer.sh statusserver4 的角色是 follower查看进程2.3 Hadoop 配置[hadoopserver1 ~]$cdhadoop/etc/hadoop/[hadoopserver1 hadoop]$vimcore-site.xml[hadoopserver1 hadoop]$vimhdfs-site.xml在三个DN上依次启动 journalnode[hadoopserver2 apache-zookeeper-3.8.6-bin]$cd[hadoopserver2 ~]$cdhadoop[hadoopserver2 hadoop]$ bin/hdfs--daemonstart journalnode[hadoopserver3 apache-zookeeper-3.8.6-bin]$cd[hadoopserver3 ~]$cdhadoop[hadoopserver3 hadoop]$ bin/hdfs--daemonstart journalnode[hadoopserver4 apache-zookeeper-3.8.6-bin]$cd[hadoopserver4 ~]$cdhadoop[hadoopserver4 hadoop]$ bin/hdfs--daemonstart journalnode格式化 HDFS 集群只在 server1 上执行[hadoopserver1 hadoop]$cd[hadoopserver1 ~]$cdhadoop[hadoopserver1 hadoop]$ bin/hdfs namenode-formatscp-r/tmp/hadoop-hadoop server5:/tmp格式化 ZooKeeper只在 server1 上执行[hadoopserver1 hadoop]$ bin/hdfs zkfc-formatZK启动 HDFS 集群只在 server1 上执行[hadoopserver1 hadoop]$ sbin/start-dfs.sh查看各节点状态查看前端网页server1 为 activeserver5 为standby测试中止 server1 的NameNode 进程[hadoopserver1 hadoop]$kill-940713server1 的前端无法访问server5 变 active恢复 server1[hadoopserver1 hadoop]$ bin/hdfs--daemonstart namenodeserver1 变 standby2.4 yarn 高可用配置[hadoopserver1 hadoop]$pwd/home/hadoop/hadoop[hadoopserver1 hadoop]$vimetc/hadoop/yarn-site.xml启动 yarn 服务[hadoopserver1 hadoop]$ sbin/start-yarn.shserver1 为 standbyserver5 为 active测试中止 server5 的 ResourceManager 进程[hadoopserver5 hadoop]$kill-928361server1 变 active恢复 server5 服务[hadoopserver5 hadoop]$ bin/yarn--daemonstart resourcemanagerserver5 变 standby
延伸阅读

更多相关文章

2026/10/25 23:54:04

PCA 数据降维:原理、Sklearn 实战与自动选 K

一、为什么需要降维 在机器学习与数据分析中,高维数据(几十甚至几百个特征)会带来诸多挑战。PCA(主成分分析)作为一种经典的线性降维技术,能够有效解决以下痛点: 痛点解决方案维度灾难&#x…

2026/10/24 4:26:21

HoRain云--使用 VS Code 开发 Node.js

Visual Studio Code(简称 VS Code)是微软开发的免费开源代码编辑器, 是目前最受欢迎的 Node.js 开发编辑器之一。 主要优势 内置 Node.js 支持:提供智能代码补全、调试等功能丰富的扩展:可通过扩展市场安装各种 Node…

2026/10/27 23:02:08

华为逆变器Modbus TCP数据采集实战:从寄存器映射到本地落库

简介:这份资源面向从事智能设备监控、能源管理系统或工业自动化的开发者,聚焦如何通过Modbus TCP协议远程采集华为逆变器的运行数据。华为逆变器是光伏发电系统的核心部件,借助Modbus TCP可实时读取功率输出、电压、电流、效率等参数&#xf…

2026/10/27 23:02:08

T3 Stack实战:Next.js+tRPC+Prisma全栈开发指南

上礼拜帮一个朋友看他的外包项目,对方上来就一句“就你一个人写,两礼拜能上线不”。我说能,别用你们公司那套几十个微服务的架构了,直接整套T3走起。后来想了想,这几年我经手的全栈项目里,如果是单人或小团…

2026/10/27 23:02:08

算法工程师十年技术栈演变与核心技能升级

1. 算法工程师的角色变迁2015年那会儿我刚入行,算法工程师这个岗位还带着几分神秘色彩。那时候我们主要用Python写些简单的机器学习脚本,调调scikit-learn里的模型参数就能解决大部分问题。记得第一次用随机森林做用户分群时,团队里的人都觉得…

2026/10/27 23:02:08

从代码腐化到 t3code:TypeScript 工程化编码规范实践

先说个背景。年初我接手了一个跑了快两年的 TypeScript 全栈项目,代码量四万多行,看起来一片繁荣。真正开始迭代才发现,处处都是any、隐式类型、三四种命名风格共存,一个组件里塞了两千行业务逻辑。最离谱的是,同一个数…

2026/10/27 23:02:08

opencode 深度解析:终端 Agent 生态位、模型接入与 Skill 实战

如果你用过 Claude Code 再回头看 opencode,会有一种“这工具怎么越做越像个活物”的感觉。上篇讲完了基础安装和日常用法,这篇我打算把大家问得最多的几个层面一次性聊透:opencode 在整套 AI 编码工具链里到底处于什么生态位、它的模型服务面…

2026/10/27 22:57:08

BCEWithLogitsLoss多标签分类:形状与dtype避坑

1. 从一次诡异的 loss0.693 说起多标签分类任务里,BCEWithLogitsLoss大概是出镜率最高、也最容易被用错的一个损失函数。我见过太多次类似的场景:模型结构写得没问题,数据管道也跑通了,训练日志里 loss 稳稳地停在 0.693 附近&…

2026/10/27 14:24:03

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/27 9:34:54

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/27 0:59:21

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/27 0:02:28

WorkBuddy_新建任务与工作模式19_“模式选错”的典型代价

“模式选错”的典型代价 摘要 在软件工程中,设计模式、架构模式、并发模式乃至团队协作模式的选择,往往在项目早期就决定了后续的开发效率和维护成本。本文通过多个真实场景,剖析“模式选错”带来的典型代价——包括返工成本、技术债务累积、…

2026/10/27 0:02:28

WorkBuddy_新建任务与工作模式20_新手推荐路径

新手推荐路径 摘要 在 AI 辅助开发工具快速普及的今天,新手面对最多的困惑往往不是"工具够不够强",而是"我该从哪一步开始用"。本文提出一条经过实践验证的三阶段学习路径:先从 Ask(问答式交互)起…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑