当前位置: 首页 > news >正文

无单点故障:Hadoop HA 架构设计与最佳实践

一、引言

HA(High Availability,高可用)的核心目标,是保证集群能够7×24 小时不间断提供服务,确保业务稳定运行。在原生 Hadoop 架构中,NameNode 仅部署单个实例,而 DataNode 为多节点集群。一旦唯一的 NameNode 发生故障,整个 HDFS 将无法对外服务,形成典型的单点故障问题;同样,YARN 中的 ResourceManager 也存在类似风险。

为解决 NameNode 单点故障,通常采用 ZooKeeper 集群搭建 Hadoop 高可用架构。其基本思路是启动两台 NameNode,以主从模式运行:一台作为主节点对外提供服务,另一台作为备用节点待命。若两台 NameNode 同时处于工作状态,会引发脑裂现象,导致集群元数据不一致甚至服务异常。

不同组件实现高可用的方式各有差异:ZooKeeper 通过多节点互备实现高可用,MySQL 依靠主从复制保障高可用,而 Hadoop 则采用主备切换模式。

在正式搭建 Hadoop 高可用集群之前,为避免配置失误造成集群损坏,需要先对现有环境进行快照备份,为后续操作提供安全保障。

二、搭建namenode的高可用

1.免密登录配置与工具安装

在hadoop12节点执行以下命令完成SSH免密登录配置:

ssh-keygen -t rsa ssh-copy-id hadoop11 ssh-copy-id hadoop12 ssh-copy-id hadoop13

安装psmisc工具用于ZKFC远程管理NameNode进程,在hadoop11节点执行:

xcall yum install -y psmisc

若出现yum源异常,可通过以下命令修复:

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

2.环境准备与清理

确保所有节点已安装JDK和ZooKeeper。若之前部署过Hadoop,需先清理环境:

stop-all.sh xcall rm -rf /opt/installs/hadoop3.1.4/data /opt/installs/hadoop3.1.4/logs/

3.核心配置文件修改

hadoop-env.sh配置指定JDK路径及运行用户,配置完成后需同步至其他节点:

export JAVA_HOME=/opt/installs/jdk1.8 export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANODE_USER=root export HDFS_JOURNALNODE_USER=root export HDFS_ZKFC_USER=root

core-site.xml配置

<configuration> <property> <name>hadoop.tmp.dir</name> <value>/opt/installs/hadoop3.1.4/data</value> </property> <property> <name>fs.defaultFS</name> <value>hdfs://hdfs-cluster</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>hadoop11:2181,hadoop12:2181,hadoop13:2181</value> </property> </configuration>

hdfs-site.xml配置

<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.nameservices</name> <value>hdfs-cluster</value> </property> <property> <name>dfs.ha.namenodes.hdfs-cluster</name> <value>nn1,nn2</value> </property> <!-- 其余配置内容保持不变 --> </configuration>

4.集群初始化与启动流程

启动ZooKeeper集群:

zk.sh start

首次搭建时初始化ZKFC节点(在hadoop11执行):

hdfs zkfc -formatZK

启动JournalNode服务(所有节点执行):

xcall hdfs --daemon start journalnode

格式化NameNode(在hadoop11执行):

hdfs namenode -format

启动HDFS集群:

start-dfs.sh

初始化并启动备用NameNode(在hadoop12执行):

hdfs namenode -bootstrapStandby hdfs --daemon start namenode

5.环境重置操作

清除ZK中HA节点数据:

zkCli.sh && deleteall /hadoop-ha

清理所有节点数据:

xcall rm -rf /opt/installs/journalnode/data/ xcall rm -rf /opt/installs/hadoop3.1.4/data/ /opt/installs/hadoop3.1.4/logs/

6.状态验证与测试

通过Web界面访问hadoop11:9870和hadoop12:9870,确认NameNode主备状态。测试故障转移功能:

hdfs --daemon stop namenode

观察备用节点自动切换为Active状态,原主节点恢复后会自动变为Standby。

三、搭建resourcemanager的高可用

1.配置文件检查与修改

检查mapred-site.xml文件,确保仅包含YARN及HistoryServer相关配置。若存在其他无关配置,需移除或注释掉。

修改yarn-site.xml文件,保留原有YARN及日志服务配置,新增RM高可用相关配置。以下为关键配置示例:

<property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <property> <name>yarn.resourcemanager.cluster-id</name> <value>cluster1</value> </property> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property>

使用同步工具如myscp将修改后的mapred-site.xmlyarn-site.xml同步至集群所有节点,确保配置一致。

2.启动YARN集群

执行启动命令start-yarn.sh拉起YARN相关服务。若为首次启动,需分别在两个RM节点上手动启动ResourceManager:

yarn --daemon start resourcemanager

3.RM主备状态查看

通过以下命令查看RM节点的主备状态:

yarn rmadmin -getAllServiceState

正常输出应显示一个节点为active,另一个为standby。例如:

hadoop11:8033 active hadoop12:8033 standby

4.RM高可用测试

停止当前active节点的RM服务:

yarn --daemon stop resourcemanager

再次执行状态检查命令,确认原standby节点已自动切换为active,原active节点显示连接失败。

重启原active节点的RM服务:

yarn --daemon start resourcemanager

验证其自动恢复为standby状态,且不会抢占当前active节点。

5.高可用YARN集群验证

提交WordCount任务测试集群可用性:

hadoop jar /path/to/hadoop-mapreduce-examples.jar wordcount /input/path /output/path

通过Web界面访问验证:

  • 直接访问active节点的Web界面(如http://bigdata02:8088/)。
  • 尝试访问standby节点界面,确认会自动跳转到active节点页面。

6.注意事项

  • 确保ZooKeeper服务正常运行,RM高可用依赖ZK进行状态管理。
  • 检查防火墙设置,确保节点间通信端口(如8033、8088等)未被阻塞。
  • 定期监控RM日志,排查潜在问题。
http://www.jsqmd.com/news/613683/

相关文章:

  • 突破硬件壁垒:普通PC运行macOS的创新实践指南
  • 64.Acwing基础课第875题-简单-快速幂
  • 2026贵阳工程门窗配套公司推荐5家名单出炉,源头工厂直营拒绝差价 - 精选优质企业推荐榜
  • DeepXDE创新实践指南:科学机器学习的无网格革命
  • 花屏/蓝屏/黑屏/画面抖动/冻结/模糊检测,聊聊EasyCVR的视频质量诊断插件,解决运维人的实际烦恼
  • 下载 | Windows Server 2016最新纯净版ISO映像!(集成3月更新、标准版、数据中心版、14393.8957)
  • 2026年4月昆明工厂设备/电机/铜铝铁/二手设备/废品回收公司综合测评与选购指南 - 2026年企业推荐榜
  • 3步彻底改造你的Windows 11:从臃肿到极速的终极方案
  • 终极解决方案:Windows 10 OneDrive 彻底卸载专业指南
  • BEYOND REALITY Z-Image保姆级教程:5分钟部署,零基础生成高清人像
  • 别再盲目升级PHP版本!异步I/O性能拐点实测报告:8.1→8.2→8.3在epoll/kqueue下的syscall耗时变化(含strace+perf原始数据)
  • 在超大数据集下 DuckDB 与 MySQL 查询速度对比捞
  • 2026贵阳工程门窗配套公司发布突出5家源头工厂直营名单 - 精选优质企业推荐榜
  • Spring Boot 3.2+Loom生产就绪 checklist(含线程泄漏检测脚本、监控埋点规范、回滚熔断机制)
  • 2026年颗粒机生产线厂家推荐:木屑颗粒机/生物质颗粒机/锯末颗粒机/秸秆颗粒机专业供应 - 品牌推荐官
  • 2026最新广东广州等地非洲翠/独龙玉手镯批发及厂家推荐 - 十大品牌榜
  • 5G车载网关选型介绍
  • Win11Debloat:终极Windows系统优化指南,一键清理垃圾提升性能
  • 如何快速掌握MuseTalk:实时高质量AI唇同步的完整实践指南
  • 2026互联网薪资报告:AI崛起!核心技术岗薪资暴涨,传统岗位如何逆袭?高薪/避雷指南+城市薪酬对比表(速看)
  • StreamingClaw具身智能上车:理想基于OpenClaw的流式Agent革命
  • 自动卡式加热炉哪家性价比高?经济型自动卡式加热炉推荐-2026国产自动卡式加热炉哪个牌子好且受欢迎 - 品牌推荐大师
  • YOLOv8与Cosmos-Reason1-7B的联合应用:智能视觉推理系统
  • 再次革新 .NET 的构建和发布方式(三)刻
  • 2026年主流秸秆粉碎机横向对比与使用体验,药材粉碎机/液压翻堆机/有机肥制造设备/废旧木材粉碎机,粉碎机公司哪个好 - 品牌推荐师
  • CustomTkinter:如何用Python轻松打造现代化桌面应用界面
  • 基于File-Based App开发MVP项目辟
  • OpenClaw生态模型使用量全景:国产模型主导12.96万亿Token时代
  • 游戏资源定制利器:Switch-Toolbox全场景应用指南
  • 终极指南:如何用KMS_VL_ALL_AIO一键激活Windows和Office