单机部署Yarn:从环境配置到生产就绪的完整指南
2025.09.17 11:04浏览量:1简介:本文详细阐述了在单机环境下部署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为例,需执行以下预处理:
# 关闭SELinux
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sudo 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 11
sudo 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.gz
tar -xzvf yarn-3.3.4.tar.gz -C /opt/
# 配置环境变量
echo 'export YARN_HOME=/opt/yarn-3.3.4' >> ~/.bashrc
echo 'export PATH=$YARN_HOME/bin:$PATH' >> ~/.bashrc
source ~/.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, rollingfile
log4j.appender.rollingfile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingfile.File=/var/log/yarn/yarn.log
log4j.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 {
daily
rotate 7
compress
missingok
}
六、常见问题解决方案
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/日的场景,建议评估分布式部署方案以获得更好的资源隔离和扩展性。
发表评论
登录后可评论,请前往 登录 或 注册