logo

单机部署 Yarn:从零开始构建高效资源管理环境

作者:谁偷走了我的奶酪2025.09.17 10:41浏览量:0

简介:本文详细介绍了如何在单机环境下部署 Yarn 资源管理器,涵盖环境准备、安装配置、运行测试及优化建议,助力开发者快速搭建高效资源调度平台。

单机部署 Yarn:从零开始构建高效资源管理环境

引言

在大数据处理与分布式计算领域,Yarn(Yet Another Resource Negotiator)作为 Hadoop 生态的核心组件,负责集群资源的统一管理与调度。然而,对于开发测试、小型项目或教育学习场景,单机部署 Yarn 能提供轻量级的资源管理方案,无需复杂集群即可验证算法逻辑或运行小型任务。本文将详细阐述单机环境下 Yarn 的部署流程、配置要点及优化建议,助力开发者快速搭建高效资源调度平台。

一、环境准备:基础条件与工具选择

1.1 硬件要求

单机部署 Yarn 对硬件配置要求较低,但需满足以下基本条件:

  • CPU:双核及以上(推荐四核,以支持多任务并行)
  • 内存:8GB 及以上(Yarn 默认分配资源需预留系统内存)
  • 磁盘:20GB 可用空间(存储日志、临时文件等)
  • 操作系统:Linux(推荐 CentOS/Ubuntu)或 macOS(需通过 Homebrew 安装)

1.2 软件依赖

  • Java 环境:Yarn 依赖 JDK 8+,需配置 JAVA_HOME 环境变量。
  • Hadoop 基础:Yarn 是 Hadoop 的子项目,需安装 Hadoop 3.x 版本(包含 Yarn 组件)。
  • SSH 服务:单机需启用 SSH 无密码登录(ssh localhost 无需密码)。

1.3 安装方式

  • 二进制包安装:从 Apache 官网下载预编译的 Hadoop 包(含 Yarn)。
  • 源码编译安装:适合定制化需求,但步骤复杂,推荐新手使用二进制包。

二、安装与配置:从下载到启动

2.1 下载 Hadoop 包

访问 Apache Hadoop 下载页面,选择稳定版本(如 3.3.6),解压至指定目录:

  1. tar -xzvf hadoop-3.3.6.tar.gz -C /opt/
  2. cd /opt/hadoop-3.3.6

2.2 配置环境变量

编辑 ~/.bashrc~/.zshrc,添加以下内容:

  1. export HADOOP_HOME=/opt/hadoop-3.3.6
  2. export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  3. export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # 根据实际路径调整

执行 source ~/.bashrc 使配置生效。

2.3 配置 Yarn 核心文件

2.3.1 yarn-site.xml

编辑 $HADOOP_HOME/etc/hadoop/yarn-site.xml,配置 ResourceManager 和 NodeManager 参数:

  1. <configuration>
  2. <!-- ResourceManager 地址(单机部署为 localhost) -->
  3. <property>
  4. <name>yarn.resourcemanager.hostname</name>
  5. <value>localhost</value>
  6. </property>
  7. <!-- NodeManager 资源分配 -->
  8. <property>
  9. <name>yarn.nodemanager.resource.memory-mb</name>
  10. <value>4096</value> <!-- 分配 4GB 内存 -->
  11. </property>
  12. <property>
  13. <name>yarn.nodemanager.resource.cpu-vcores</name>
  14. <value>2</value> <!-- 分配 2 个虚拟核 -->
  15. </property>
  16. </configuration>

2.3.2 mapred-site.xml(可选)

若需运行 MapReduce 作业,需配置:

  1. <configuration>
  2. <property>
  3. <name>mapreduce.framework.name</name>
  4. <value>yarn</value>
  5. </property>
  6. </configuration>

2.3.3 core-site.xml

配置 Hadoop 临时目录:

  1. <configuration>
  2. <property>
  3. <name>hadoop.tmp.dir</name>
  4. <value>/tmp/hadoop</value>
  5. </property>
  6. </configuration>

2.4 格式化 NameNode(仅首次需要)

  1. $HADOOP_HOME/bin/hdfs namenode -format

2.5 启动 Yarn 服务

  1. # 启动 HDFS(若使用)
  2. $HADOOP_HOME/sbin/start-dfs.sh
  3. # 启动 Yarn
  4. $HADOOP_HOME/sbin/start-yarn.sh

验证服务状态:

  1. jps # 应看到 ResourceManager、NodeManager 等进程

三、运行测试:验证部署成功

3.1 提交示例作业

使用 yarn jar 提交一个简单作业(如计算 π 的近似值):

  1. $HADOOP_HOME/bin/yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar pi 2 5

输出应显示计算结果,如 Estimated value of Pi is 3.16000000000000000000

3.2 监控资源使用

通过 Web UI 监控 Yarn 状态:

  • ResourceManager UI:http://localhost:8088
  • NodeManager UI:http://localhost:8042

四、优化与调优:提升单机性能

4.1 内存分配优化

调整 yarn-site.xml 中的内存参数:

  1. <property>
  2. <name>yarn.scheduler.maximum-allocation-mb</name>
  3. <value>3072</value> <!-- 单个容器最大内存 -->
  4. </property>
  5. <property>
  6. <name>yarn.scheduler.minimum-allocation-mb</name>
  7. <value>512</value> <!-- 单个容器最小内存 -->
  8. </property>

4.2 日志管理

配置日志聚合以减少本地存储占用:

  1. <property>
  2. <name>yarn.log-aggregation-enable</name>
  3. <value>true</value>
  4. </property>
  5. <property>
  6. <name>yarn.log.server.url</name>
  7. <value>http://localhost:19888/jobhistory/logs</value>
  8. </property>

4.3 并发控制

限制同时运行的容器数量:

  1. <property>
  2. <name>yarn.nodemanager.resource.count-vcores</name>
  3. <value>4</value> <!-- 最大虚拟核数 -->
  4. </property>

五、常见问题与解决方案

5.1 端口冲突

80888042 端口被占用,修改 yarn-site.xml 中的配置:

  1. <property>
  2. <name>yarn.resourcemanager.webapp.address</name>
  3. <value>localhost:8089</value>
  4. </property>

5.2 内存不足

错误提示 Container [pid=...] is running beyond physical memory limits 时,需:

  1. 减少 mapreduce.map.memory.mbmapreduce.reduce.memory.mb
  2. 增加 NodeManager 内存(yarn.nodemanager.resource.memory-mb)。

5.3 SSH 连接失败

确保已生成 SSH 密钥并添加到 ~/.ssh/authorized_keys

  1. ssh-keygen -t rsa
  2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  3. chmod 600 ~/.ssh/authorized_keys

六、总结与展望

单机部署 Yarn 为开发者提供了低门槛的资源管理方案,适用于算法验证、教学演示及小型数据处理场景。通过合理配置内存、CPU 和日志参数,可显著提升单机性能。未来,可结合 Docker 容器化技术进一步简化部署流程,或集成 Spark 等计算框架扩展应用场景。

通过本文的指导,读者应能独立完成 Yarn 的单机部署,并掌握基础调优方法,为后续集群部署或复杂任务开发奠定坚实基础。

相关文章推荐

发表评论