单机部署Yarn:从环境配置到生产就绪的完整指南
2025.09.17 11:04浏览量:2简介:本文详细阐述了在单机环境下部署Yarn资源管理系统的完整流程,涵盖环境准备、安装配置、服务启动及生产环境优化等关键环节,为开发者提供可落地的技术实践方案。
单机部署Yarn:从环境准备到生产就绪的完整实践
一、环境准备:基础条件与系统要求
1.1 硬件资源评估
单机部署Yarn的核心硬件要求需满足:CPU核心数≥4(建议8核以上),内存容量≥16GB(大数据场景建议32GB+),磁盘空间≥200GB(需根据实际数据处理量动态调整)。例如,在处理每日10TB日志的场景下,建议配置SSD硬盘+32GB内存的服务器。
1.2 操作系统选择
推荐使用CentOS 7/8或Ubuntu 20.04 LTS等稳定版本。以CentOS 8为例,需执行以下预处理:
# 关闭SELinuxsudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/configsudo setenforce 0# 配置防火墙规则sudo firewall-cmd --permanent --add-port={8088/tcp,8042/tcp,9000/tcp}sudo firewall-cmd --reload
1.3 Java环境配置
Yarn依赖Java 8/11运行环境,推荐使用OpenJDK:
# 安装OpenJDK 11sudo yum install -y java-11-openjdk-devel# 验证安装java -version# 应输出:openjdk version "11.0.xx"
二、安装部署:三种主流方案对比
2.1 方案一:Hadoop集成部署
适用于已有Hadoop环境的场景,通过修改hadoop-env.sh和yarn-site.xml实现:
<!-- yarn-site.xml 核心配置 --><property><name>yarn.resourcemanager.hostname</name><value>localhost</value></property><property><name>yarn.nodemanager.resource.memory-mb</name><value>8192</value> <!-- 分配8GB内存 --></property>
2.2 方案二:独立Yarn安装
使用Apache官方发行包(3.3.4版本为例):
# 下载并解压wget https://downloads.apache.org/hadoop/common/yarn-3.3.4/yarn-3.3.4.tar.gztar -xzvf yarn-3.3.4.tar.gz -C /opt/# 配置环境变量echo 'export YARN_HOME=/opt/yarn-3.3.4' >> ~/.bashrcecho 'export PATH=$YARN_HOME/bin:$PATH' >> ~/.bashrcsource ~/.bashrc
2.3 方案三:Docker容器化部署
适合快速验证场景,使用官方镜像:
docker run -d --name yarn-master \-p 8088:8088 -p 8042:8042 \-e YARN_NODEMANAGER_MEMORY=4096 \apache/yarn:3.3.4
三、核心配置调优
3.1 内存管理配置
在yarn-site.xml中设置关键参数:
<property><name>yarn.scheduler.maximum-allocation-mb</name><value>16384</value> <!-- 单容器最大内存 --></property><property><name>yarn.nodemanager.vmem-pmem-ratio</name><value>2.1</value> <!-- 虚拟内存/物理内存比 --></property>
3.2 资源调度策略
配置Fair Scheduler实现多任务公平调度:
<property><name>yarn.scheduler.fair.allocation.file</name><value>/etc/hadoop/conf/fair-scheduler.xml</value></property>
其中fair-scheduler.xml示例:
<allocations><pool name="dev"><weight>2.0</weight><maxResources>8192mb,4vcores</maxResources></pool><pool name="prod"><weight>1.0</weight></pool></allocations>
四、启动与验证
4.1 服务启动流程
# 启动顺序$YARN_HOME/sbin/start-yarn.sh# 验证服务状态jps | grep -E 'ResourceManager|NodeManager'# 应输出:ResourceManager NodeManager
4.2 Web UI访问
通过浏览器访问http://localhost:8088,检查以下关键指标:
- 可用内存:显示配置的物理内存总量
- 活跃节点:应显示1个节点(localhost)
- 待处理应用:初始应为0
4.3 运行测试任务
提交一个简单的sleep作业验证:
$YARN_HOME/bin/yarn jar \$YARN_HOME/share/hadoop/yarn/hadoop-yarn-applications-distributedshell-3.3.4.jar \--jar $YARN_HOME/share/hadoop/yarn/hadoop-yarn-applications-distributedshell-3.3.4.jar \--num_containers 2 \--args "sleep 60"
五、生产环境优化建议
5.1 日志管理方案
配置log4j.properties实现日志分级存储:
log4j.logger.org.apache.hadoop.yarn=INFO, console, rollingfilelog4j.appender.rollingfile=org.apache.log4j.RollingFileAppenderlog4j.appender.rollingfile.File=/var/log/yarn/yarn.loglog4j.appender.rollingfile.MaxFileSize=100MB
5.2 监控告警集成
推荐Prometheus+Grafana监控方案:
# prometheus.yml 配置示例scrape_configs:- job_name: 'yarn'metrics_path: '/jmx'static_configs:- targets: ['localhost:8088']
5.3 备份恢复策略
定期备份以下关键文件:
# 配置文件备份tar -czvf yarn-config-backup-$(date +%Y%m%d).tar.gz \$YARN_HOME/etc/hadoop/yarn-site.xml \$YARN_HOME/etc/hadoop/fair-scheduler.xml# 日志轮转配置/etc/logrotate.d/yarn:/var/log/yarn/*.log {dailyrotate 7compressmissingok}
六、常见问题解决方案
6.1 内存不足错误
现象:Container killed by YARN for exceeding memory limits
解决方案:
- 调整
yarn.nodemanager.resource.memory-mb参数 - 检查应用是否配置了正确的
mapreduce.map.memory.mb值
6.2 端口冲突问题
诊断命令:
netstat -tulnp | grep -E '8088|8042'# 若发现冲突,修改yarn-site.xml中的端口配置
6.3 版本兼容性
Hadoop 3.x与Yarn 3.x的兼容性矩阵:
| Hadoop版本 | Yarn推荐版本 | Java要求 |
|——————|———————|—————|
| 3.3.x | 3.3.4 | Java 11 |
| 3.2.x | 3.2.4 | Java 8 |
七、扩展应用场景
7.1 机器学习作业调度
通过配置yarn.application.classpath集成TensorFlow:
<property><name>yarn.application.classpath</name><value>$HADOOP_CONF_DIR,$HADOOP_COMMON_HOME/share/hadoop/common/*,$HADOOP_COMMON_HOME/share/hadoop/common/lib/*,/opt/tensorflow/lib/*</value></property>
7.2 混合工作负载管理
使用Capacity Scheduler实现批处理和流式作业的隔离:
<property><name>yarn.scheduler.capacity.root.queues</name><value>batch,streaming</value></property><property><name>yarn.scheduler.capacity.root.batch.capacity</name><value>70</value></property>
本指南系统梳理了单机部署Yarn的全流程,从环境准备到生产优化提供了可落地的实施方案。实际部署时,建议先在测试环境验证配置参数,再逐步迁移到生产环境。对于数据量超过50TB/日的场景,建议评估分布式部署方案以获得更好的资源隔离和扩展性。

发表评论
登录后可评论,请前往 登录 或 注册