Rocky Linux 9.4部署Hadoop 3.4.2高可用集群指南

发布时间:2026/10/26 7:05:42
Rocky Linux 9.4部署Hadoop 3.4.2高可用集群指南 1. 项目概述在当今大数据处理领域Hadoop作为分布式存储和计算的基石框架其高可用集群部署一直是企业级应用的核心需求。Rocky Linux 9.4作为RHEL系的后起之秀以其稳定性和长期支持特性成为生产环境的首选。本文将详细记录在Rocky Linux 9.4系统上部署Hadoop 3.4.2高可用集群的全过程涵盖从系统准备到服务验证的完整链路。高可用集群的核心价值在于消除单点故障通过ZooKeeper协调和JournalNode日志同步实现NameNode的自动故障转移。与单节点部署相比这种架构能够保证HDFS和YARN服务在硬件故障时持续可用特别适合7×24小时运行的生产环境。提示实际操作前建议准备至少4台物理机或虚拟机2台NameNode2台DataNode每台建议配置4核CPU、8GB内存和50GB存储空间这是运行基础Hadoop服务的最低硬件要求。2. 环境准备与系统配置2.1 操作系统安装与调优Rocky Linux 9.4的最小化安装是推荐的起点。在安装阶段需要特别注意分区方案建议/boot1GB标准ext4swap物理内存的1.5倍当内存≤16GB时/剩余空间的70%XFS文件系统/data剩余30%专门用于HDFS存储XFS格式关键系统参数调整# 禁用透明大页THP——Hadoop性能杀手 echo never /sys/kernel/mm/transparent_hugepage/enabled echo never /sys/kernel/mm/transparent_hugepage/defrag # 永久生效配置 cat EOF /etc/rc.d/rc.local if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never /sys/kernel/mm/transparent_hugepage/enabled fi if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never /sys/kernel/mm/transparent_hugepage/defrag fi EOF chmod x /etc/rc.d/rc.local网络配置优化# 增大TCP缓冲区大小 echo net.core.rmem_max16777216 /etc/sysctl.conf echo net.core.wmem_max16777216 /etc/sysctl.conf echo net.ipv4.tcp_rmem4096 87380 16777216 /etc/sysctl.conf echo net.ipv4.tcp_wmem4096 65536 16777216 /etc/sysctl.conf # 提升连接跟踪表大小 echo net.netfilter.nf_conntrack_max655360 /etc/sysctl.conf sysctl -p2.2 基础依赖安装Hadoop运行需要Java环境和SSH无密码访问# 安装OpenJDK 8Hadoop 3.x官方推荐版本 dnf install -y java-1.8.0-openjdk-devel # 验证Java版本 java -version # 应显示1.8.0_xxx # 配置JAVA_HOME echo export JAVA_HOME$(dirname $(dirname $(readlink -f $(which java)))) /etc/profile source /etc/profile # 安装SSH服务 dnf install -y openssh-server openssh-clients systemctl enable sshd --now # 生成SSH密钥所有节点执行 ssh-keygen -t rsa -P -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys3. Hadoop高可用集群部署3.1 架构设计典型的高可用集群包含以下组件NameNode x2Active-Standby模式通过ZKFC监控状态JournalNode x3奇数个存储EditLog变更记录DataNode存储实际数据块建议≥2台ZooKeeper x3协调故障转移建议独立部署ResourceManager x2YARN资源管理高可用网络拓扑示例---------------- ---------------- | NameNode1 |-------| NameNode2 | | (Active/Standby)| | (Standby/Active)| --------------- --------------- | | v v ---------------- ---------------- | JournalNode1 | | DataNode1 | ---------------- ---------------- ^ ^ | | ---------------- ---------------- | JournalNode2 | | DataNode2 | ---------------- ---------------- ^ | ---------------- | JournalNode3 | ----------------3.2 组件安装与配置下载并解压Hadoopwget https://archive.apache.org/dist/hadoop/common/hadoop-3.4.2/hadoop-3.4.2.tar.gz tar -xzf hadoop-3.4.2.tar.gz -C /opt/ ln -s /opt/hadoop-3.4.2 /opt/hadoop核心配置文件修改/opt/hadoop/etc/hadoop/目录core-site.xmlconfiguration property namefs.defaultFS/name valuehdfs://mycluster/value /property property nameha.zookeeper.quorum/name valuezk1.example.com:2181,zk2.example.com:2181,zk3.example.com:2181/value /property property namehadoop.tmp.dir/name value/data/hadoop/tmp/value /property /configurationhdfs-site.xmlconfiguration !-- 高可用配置 -- property namedfs.nameservices/name valuemycluster/value /property property namedfs.ha.namenodes.mycluster/name valuenn1,nn2/value /property property namedfs.namenode.rpc-address.mycluster.nn1/name valuenamenode1:8020/value /property property namedfs.namenode.rpc-address.mycluster.nn2/name valuenamenode2:8020/value /property !-- JournalNode配置 -- property namedfs.namenode.shared.edits.dir/name valueqjournal://journalnode1:8485;journalnode2:8485;journalnode3:8485/mycluster/value /property property namedfs.journalnode.edits.dir/name value/data/hadoop/journal/value /property !-- 故障转移配置 -- property namedfs.ha.automatic-failover.enabled/name valuetrue/value /property property namedfs.client.failover.proxy.provider.mycluster/name valueorg.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider/value /property /configurationyarn-site.xmlconfiguration property nameyarn.resourcemanager.ha.enabled/name valuetrue/value /property property nameyarn.resourcemanager.cluster-id/name valuecluster-yarn/value /property property nameyarn.resourcemanager.ha.rm-ids/name valuerm1,rm2/value /property property nameyarn.resourcemanager.hostname.rm1/name valueresourcemanager1/value /property property nameyarn.resourcemanager.hostname.rm2/name valueresourcemanager2/value /property property nameyarn.resourcemanager.zk-address/name valuezk1.example.com:2181,zk2.example.com:2181,zk3.example.com:2181/value /property /configuration3.3 集群初始化与启动首次启动JournalNode# 在所有JournalNode节点执行 hdfs --daemon start journalnode格式化ZooKeeper中的HA状态# 在其中一个NameNode执行 hdfs zkfc -formatZK格式化NameNode并启动# 在第一个NameNode执行 hdfs namenode -format hdfs --daemon start namenode # 在第二个NameNode执行同步 hdfs namenode -bootstrapStandby hdfs --daemon start namenode启动所有DataNodehdfs --daemon start datanode启动ZKFC故障转移控制器hdfs --daemon start zkfc启动YARN服务# 在ResourceManager节点执行 yarn --daemon start resourcemanager # 在所有NodeManager节点执行 yarn --daemon start nodemanager4. 验证与监控4.1 基础功能验证检查HDFS高可用状态hdfs haadmin -getServiceState nn1 # 应返回active或standby hdfs haadmin -getServiceState nn2测试文件系统操作hdfs dfs -mkdir /test hdfs dfs -put /etc/hosts /test hdfs dfs -cat /test/hosts模拟NameNode故障# 在Active NameNode上杀死进程 kill -9 namenode_pid # 观察Standby在30秒内自动接管通过zkfc日志 tail -f /opt/hadoop/logs/hadoop-*-zkfc-*.log4.2 监控配置建议关键指标监控项HDFS可用DataNode数量剩余存储容量丢失块数量YARN可用vCores/Memory运行中的Applications容器失败率推荐监控方案# 使用Hadoop内置的JMX接口 curl http://namenode:9870/jmx?qryHadoop:serviceNameNode,nameNameNodeStatus日志收集配置/opt/hadoop/etc/hadoop/log4j.properties# 将日志级别调整为INFO生产环境推荐 log4j.logger.org.apache.hadoopINFO # 启用滚动日志 log4j.appender.RFAorg.apache.log4j.RollingFileAppender log4j.appender.RFA.MaxFileSize100MB log4j.appender.RFA.MaxBackupIndex105. 性能调优与问题排查5.1 关键参数优化HDFS调优参数hdfs-site.xmlproperty namedfs.datanode.handler.count/name value10/value !-- 建议为CPU核心数的2-3倍 -- /property property namedfs.namenode.handler.count/name value20/value !-- 高并发场景可增至40 -- /propertyYARN资源分配yarn-site.xmlproperty nameyarn.nodemanager.resource.memory-mb/name value6144/value !-- 不超过物理内存的80% -- /property property nameyarn.scheduler.maximum-allocation-mb/name value4096/value !-- 单个容器最大内存 -- /property5.2 常见问题解决方案JournalNode同步失败现象NameNode无法将editlog写入JournalNode集群排查# 检查JournalNode服务状态 jps | grep JournalNode # 查看网络连通性 telnet journalnode1 8485解决确保至少N/21个JournalNode存活3节点集群至少需要2个ZKFC无法自动故障转移检查ZooKeeper连接状态echo stat | nc zk1.example.com 2181验证zkfc的health monitor状态hdfs zkfc -formatZK -force # 谨慎使用会重置ZK状态DataNode磁盘空间不均启用平衡器hdfs balancer -threshold 10 # 磁盘使用率差异超过10%时触发调整数据块副本放置策略property namedfs.datanode.fsdataset.volume.choosing.policy/name valueorg.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy/value /property6. 安全加固与维护6.1 基础安全措施启用HDFS权限检查!-- hdfs-site.xml -- property namedfs.permissions.enabled/name valuetrue/value /property配置网络隔离# 使用firewalld限制访问 firewall-cmd --permanent --zonepublic --add-port8020/tcp # NameNode RPC firewall-cmd --permanent --zonepublic --add-port50070/tcp # NameNode HTTP firewall-cmd --permanent --zonepublic --add-port8088/tcp # YARN UI firewall-cmd --reload6.2 日常维护命令优雅重启NameNodehdfs --daemon stop namenode hdfs --daemon start namenode添加新DataNode# 在新节点安装配置后 hdfs dfsadmin -refreshNodes集群升级步骤# 1. 停止所有服务 # 2. 备份配置文件 # 3. 安装新版本到不同目录 # 4. 合并配置变更 # 5. 滚动重启服务先NameNode后DataNode在实际生产环境中我们通常会遇到NameNode堆内存不足导致的GC问题。我的经验是给NameNode分配不少于4GB的堆内存通过hadoop-env.sh中的HADOOP_NAMENODE_OPTS设置同时配置-XX:UseG1GC垃圾回收器。对于大型集群超过1亿个文件建议堆内存设置为8GB以上。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询