CentOS 上 HDFS 与 YARN 集成指南
一 环境准备与基础配置
- 操作系统建议使用 CentOS 7,安装 Java 8(OpenJDK 8)。
- 关闭 防火墙 或放行相关端口,临时禁用 SELinux 以避免权限拦截。
- 配置 NTP 时间同步,保证集群各节点时间一致。
- 配置 /etc/hosts 或 DNS,确保节点间用 主机名 互通。
- 配置 SSH 免密登录(主节点到所有节点的免密),便于脚本化启停。
- 安装 Hadoop(示例版本 3.3.1),解压至 /usr/local/hadoop-3.3.1,并配置环境变量:
- 在 /etc/profile.d/hadoop.sh 中设置:
- export HADOOP_HOME=/usr/local/hadoop-3.3.1
- export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 在 $HADOOP_HOME/etc/hadoop/hadoop-env.sh 中设置:
- export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
- 以上准备完成后,再进行 Hadoop 配置与服务启动。
二 Hadoop 配置与集成要点
- 核心配置文件路径为 $HADOOP_HOME/etc/hadoop/,关键文件与要点如下:
- core-site.xml:设置默认文件系统
- fs.defaultFShdfs://:8020
- hadoop.tmp.dir/var/lib/hadoop
- hdfs-site.xml:设置副本与数据目录
- dfs.replication3
- dfs.namenode.name.dir/data/hdfs/namenode
- dfs.datanode.data.dir/data/hdfs/datanode
- yarn-site.xml:启用 YARN 与 Shuffle 服务
- yarn.resourcemanager.hostname
- yarn.nodemanager.aux-servicesmapreduce_shuffle
- yarn.resourcemanager.webapp.address:8088
- yarn.nodemanager.resource.memory-mb4096
- yarn.nodemanager.resource.cpu-vcores4
- mapred-site.xml:指定 MapReduce 运行在 YARN 上
- mapreduce.framework.nameyarn
- 将配置同步到所有节点,保持 HADOOP_CONF_DIR 一致。
三 启动与验证
- 首次启动前格式化 NameNode:
- 启动服务:
- 启动 HDFS:start-dfs.sh
- 启动 YARN:start-yarn.sh
- 进程检查(应见到以下关键进程):
- NameNode、DataNode、SecondaryNameNode(HDFS)
- ResourceManager、NodeManager(YARN)
- 集群状态与健康检查:
- HDFS:hdfs dfsadmin -report
- YARN:yarn node -list
- Web 界面:
- HDFS NameNode Web UI:默认 50070(示例:http://:50070)
- YARN ResourceManager Web UI:8088(示例:http://:8088)
- 功能验证(运行示例作业):
- 准备输入:hdfs dfs -mkdir -p /input && hdfs dfs -put $HADOOP_HOME/README.txt /input
- 提交作业:
- hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /input /output
- 查看结果:hdfs dfs -cat /output/part-r-00000。
四 常见问题与排查
- 端口与连通性:确认 8020/50070/8088 等端口未被占用且防火墙已放行;跨节点使用 主机名 可避免解析问题。
- 权限与目录:确保 hadoop.tmp.dir、NameNode/DataNode 数据目录存在且 hdfs 用户可写。
- 配置一致性:所有节点的 core-site.xml/hdfs-site.xml/yarn-site.xml/mapred-site.xml 需一致;修改后重启相关服务。
- 资源不足:若 NodeManager 未启动或容器分配失败,检查 yarn.nodemanager.resource.memory-mb 与 yarn.nodemanager.resource.cpu-vcores 是否合理。
- 日志定位:优先查看 $HADOOP_HOME/logs/ 下对应进程的日志文件。
五 生产增强与扩展
- 高可用:
- NameNode HA:部署 JournalNode 集群,配合 ZooKeeper 实现自动故障切换。
- ResourceManager HA:配置多个 ResourceManager 实例与 ZooKeeper 仲裁。
- 队列与配额:在 capacity-scheduler.xml 中配置多队列与容量,实现资源隔离与配额管理。
- 版本与升级:生产环境建议使用 Hadoop 3.x 最新稳定版,并遵循官方升级与兼容性指引。