
1. Hadoop集群搭建概述作为一名长期从事大数据平台搭建的工程师我深知Hadoop集群配置的重要性。一个配置不当的集群轻则影响性能重则导致数据丢失。本文将基于Hadoop 3.4.3版本详细讲解生产环境集群搭建的全过程。Hadoop集群主要由HDFS和YARN两大核心组件构成。HDFS负责分布式存储YARN负责资源调度。在实际部署中我们需要考虑硬件选型、网络拓扑、安全认证等多个维度。虽然本文以非安全模式为例但生产环境强烈建议配置Kerberos认证。2. 环境准备与规划2.1 硬件需求典型的生产集群至少需要3台物理服务器1台NameNode ResourceManager主节点2台DataNode NodeManager工作节点对于存储密集型场景建议NameNode64GB内存SSD系统盘DataNode根据数据量配置多块HDD数据盘建议单盘4TB以上2.2 软件依赖必须预先安装JDK 8或11推荐OpenJDKSSH服务用于节点间通信统一的时区配置避免日志时间错乱重要提示所有节点必须保持时钟同步建议配置NTP服务。我在实际部署中遇到过因时间不同步导致的YARN应用提交失败问题。3. 核心配置文件详解3.1 core-site.xml配置这是Hadoop最基础的配置文件需要重点关注configuration !-- NameNode地址 -- property namefs.defaultFS/name valuehdfs://namenode:8020/value /property !-- 临时文件目录 -- property namehadoop.tmp.dir/name value/data/hadoop/tmp/value /property !-- IO缓冲区大小 -- property nameio.file.buffer.size/name value131072/value /property /configuration3.2 hdfs-site.xml配置NameNode配置要点property namedfs.namenode.name.dir/name value/data/hadoop/hdfs/nn/value /property property namedfs.blocksize/name value268435456/value !-- 256MB -- /propertyDataNode配置技巧property namedfs.datanode.data.dir/name value/data1/hadoop/hdfs/dn,/data2/hadoop/hdfs/dn/value /property多磁盘配置可以提升IO吞吐量我在实际测试中发现4块磁盘并行写入可使HDFS写性能提升2-3倍。3.3 yarn-site.xml关键参数ResourceManager内存配置property nameyarn.scheduler.maximum-allocation-mb/name value16384/value !-- 16GB -- /property property nameyarn.nodemanager.resource.memory-mb/name value24576/value !-- 24GB -- /property日志聚合配置强烈建议开启property nameyarn.log-aggregation-enable/name valuetrue/value /property property nameyarn.nodemanager.remote-app-log-dir/name value/tmp/logs/value /property4. 集群部署实战4.1 系统用户创建安全起见应为不同服务创建专用用户# 创建HDFS专用用户 useradd -r -s /bin/false hdfs # 创建YARN专用用户 useradd -r -s /bin/false yarn # 创建MapReduce专用用户 useradd -r -s /bin/false mapred4.2 目录权限设置确保关键目录权限正确mkdir -p /data/hadoop/{tmp,hdfs/nn,hdfs/dn} chown -R hdfs:hadoop /data/hadoop chmod 755 /data/hadoop4.3 首次启动流程格式化NameNode仅首次sudo -u hdfs hdfs namenode -format启动HDFS集群sudo -u hdfs start-dfs.sh启动YARN集群sudo -u yarn start-yarn.sh验证集群状态hdfs dfsadmin -report yarn node -list5. 运维与监控5.1 健康检查脚本示例创建/usr/local/bin/node-health-check.sh#!/bin/bash # 检查磁盘空间 DISK_USAGE$(df -h / | awk NR2 {print $5} | tr -d %) if [ $DISK_USAGE -gt 90 ]; then echo ERROR: Root partition usage $DISK_USAGE% exit 1 fi # 检查内存使用 FREE_MEM$(free -m | awk NR2 {print $4}) if [ $FREE_MEM -lt 1024 ]; then echo ERROR: Low free memory $FREE_MEM MB exit 1 fi exit 0在yarn-site.xml中配置property nameyarn.nodemanager.health-checker.script.path/name value/usr/local/bin/node-health-check.sh/value /property5.2 关键监控指标建议监控以下核心指标HDFS剩余存储空间丢失块数量DataNode存活数YARN可用vCores待处理应用数容器失败率6. 性能调优经验6.1 内存配置黄金法则根据我的经验合理的内存分配比例应为NodeManager总内存 物理内存 × 0.8单个容器内存 NodeManager内存 ÷ vCore数 × 0.9例如32GB内存、16核的节点property nameyarn.nodemanager.resource.memory-mb/name value24576/value !-- 32GB×0.825.6GB -- /property property nameyarn.scheduler.maximum-allocation-mb/name value1440/value !-- 25.6GB÷16×0.9≈1.44GB -- /property6.2 网络优化技巧在千兆网络环境下建议调整!-- hdfs-site.xml -- property namedfs.datanode.max.xcievers/name value4096/value /property !-- yarn-site.xml -- property nameyarn.nodemanager.resource.cpu-vcores/name value16/value !-- 与物理核数一致 -- /property7. 常见问题排查7.1 DataNode无法注册现象NameNode网页显示DataNode数量不足排查步骤检查DataNode日志tail -n 100 /var/log/hadoop/hdfs/hadoop-hdfs-datanode-*.log验证网络连通性telnet namenode 8020检查防火墙规则iptables -L -n7.2 YARN应用卡住现象应用长时间处于ACCEPTED状态解决方案检查资源队列yarn queue -status default增加调度器资源property nameyarn.scheduler.capacity.maximum-am-resource-percent/name value0.5/value /property8. 生产环境建议经过多个项目的实践验证我总结出以下经验至少部署3个JournalNode实现高可用为NameNode配置SSD存储提升元数据操作性能定期执行HDFS平衡操作hdfs balancer启用HDFS快照功能保护关键数据配置ResourceManager HA避免单点故障最后提醒所有配置变更后务必先在测试环境验证再应用到生产环境。我在某次直接修改生产集群配置的经历曾导致整个集群不可用近2小时。