单机部署 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),解压至指定目录:
tar -xzvf hadoop-3.3.6.tar.gz -C /opt/
cd /opt/hadoop-3.3.6
2.2 配置环境变量
编辑 ~/.bashrc
或 ~/.zshrc
,添加以下内容:
export HADOOP_HOME=/opt/hadoop-3.3.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
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 参数:
<configuration>
<!-- ResourceManager 地址(单机部署为 localhost) -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<!-- NodeManager 资源分配 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value> <!-- 分配 4GB 内存 -->
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>2</value> <!-- 分配 2 个虚拟核 -->
</property>
</configuration>
2.3.2 mapred-site.xml
(可选)
若需运行 MapReduce 作业,需配置:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
2.3.3 core-site.xml
配置 Hadoop 临时目录:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop</value>
</property>
</configuration>
2.4 格式化 NameNode(仅首次需要)
$HADOOP_HOME/bin/hdfs namenode -format
2.5 启动 Yarn 服务
# 启动 HDFS(若使用)
$HADOOP_HOME/sbin/start-dfs.sh
# 启动 Yarn
$HADOOP_HOME/sbin/start-yarn.sh
验证服务状态:
jps # 应看到 ResourceManager、NodeManager 等进程
三、运行测试:验证部署成功
3.1 提交示例作业
使用 yarn jar
提交一个简单作业(如计算 π 的近似值):
$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
中的内存参数:
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>3072</value> <!-- 单个容器最大内存 -->
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value> <!-- 单个容器最小内存 -->
</property>
4.2 日志管理
配置日志聚合以减少本地存储占用:
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://localhost:19888/jobhistory/logs</value>
</property>
4.3 并发控制
限制同时运行的容器数量:
<property>
<name>yarn.nodemanager.resource.count-vcores</name>
<value>4</value> <!-- 最大虚拟核数 -->
</property>
五、常见问题与解决方案
5.1 端口冲突
若 8088
或 8042
端口被占用,修改 yarn-site.xml
中的配置:
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>localhost:8089</value>
</property>
5.2 内存不足
错误提示 Container [pid=...] is running beyond physical memory limits
时,需:
- 减少
mapreduce.map.memory.mb
和mapreduce.reduce.memory.mb
。 - 增加 NodeManager 内存(
yarn.nodemanager.resource.memory-mb
)。
5.3 SSH 连接失败
确保已生成 SSH 密钥并添加到 ~/.ssh/authorized_keys
:
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
六、总结与展望
单机部署 Yarn 为开发者提供了低门槛的资源管理方案,适用于算法验证、教学演示及小型数据处理场景。通过合理配置内存、CPU 和日志参数,可显著提升单机性能。未来,可结合 Docker 容器化技术进一步简化部署流程,或集成 Spark 等计算框架扩展应用场景。
通过本文的指导,读者应能独立完成 Yarn 的单机部署,并掌握基础调优方法,为后续集群部署或复杂任务开发奠定坚实基础。
发表评论
登录后可评论,请前往 登录 或 注册