logo

单机部署Yarn:从环境配置到生产就绪的完整指南

作者:KAKAKA2025.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为例,需执行以下预处理:

  1. # 关闭SELinux
  2. sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  3. sudo setenforce 0
  4. # 配置防火墙规则
  5. sudo firewall-cmd --permanent --add-port={8088/tcp,8042/tcp,9000/tcp}
  6. sudo firewall-cmd --reload

1.3 Java环境配置

Yarn依赖Java 8/11运行环境,推荐使用OpenJDK:

  1. # 安装OpenJDK 11
  2. sudo yum install -y java-11-openjdk-devel
  3. # 验证安装
  4. java -version
  5. # 应输出:openjdk version "11.0.xx"

二、安装部署:三种主流方案对比

2.1 方案一:Hadoop集成部署

适用于已有Hadoop环境的场景,通过修改hadoop-env.shyarn-site.xml实现:

  1. <!-- yarn-site.xml 核心配置 -->
  2. <property>
  3. <name>yarn.resourcemanager.hostname</name>
  4. <value>localhost</value>
  5. </property>
  6. <property>
  7. <name>yarn.nodemanager.resource.memory-mb</name>
  8. <value>8192</value> <!-- 分配8GB内存 -->
  9. </property>

2.2 方案二:独立Yarn安装

使用Apache官方发行包(3.3.4版本为例):

  1. # 下载并解压
  2. wget https://downloads.apache.org/hadoop/common/yarn-3.3.4/yarn-3.3.4.tar.gz
  3. tar -xzvf yarn-3.3.4.tar.gz -C /opt/
  4. # 配置环境变量
  5. echo 'export YARN_HOME=/opt/yarn-3.3.4' >> ~/.bashrc
  6. echo 'export PATH=$YARN_HOME/bin:$PATH' >> ~/.bashrc
  7. source ~/.bashrc

2.3 方案三:Docker容器化部署

适合快速验证场景,使用官方镜像:

  1. docker run -d --name yarn-master \
  2. -p 8088:8088 -p 8042:8042 \
  3. -e YARN_NODEMANAGER_MEMORY=4096 \
  4. apache/yarn:3.3.4

三、核心配置调优

3.1 内存管理配置

yarn-site.xml中设置关键参数:

  1. <property>
  2. <name>yarn.scheduler.maximum-allocation-mb</name>
  3. <value>16384</value> <!-- 单容器最大内存 -->
  4. </property>
  5. <property>
  6. <name>yarn.nodemanager.vmem-pmem-ratio</name>
  7. <value>2.1</value> <!-- 虚拟内存/物理内存比 -->
  8. </property>

3.2 资源调度策略

配置Fair Scheduler实现多任务公平调度:

  1. <property>
  2. <name>yarn.scheduler.fair.allocation.file</name>
  3. <value>/etc/hadoop/conf/fair-scheduler.xml</value>
  4. </property>

其中fair-scheduler.xml示例:

  1. <allocations>
  2. <pool name="dev">
  3. <weight>2.0</weight>
  4. <maxResources>8192mb,4vcores</maxResources>
  5. </pool>
  6. <pool name="prod">
  7. <weight>1.0</weight>
  8. </pool>
  9. </allocations>

四、启动与验证

4.1 服务启动流程

  1. # 启动顺序
  2. $YARN_HOME/sbin/start-yarn.sh
  3. # 验证服务状态
  4. jps | grep -E 'ResourceManager|NodeManager'
  5. # 应输出:ResourceManager NodeManager

4.2 Web UI访问

通过浏览器访问http://localhost:8088,检查以下关键指标:

  • 可用内存:显示配置的物理内存总量
  • 活跃节点:应显示1个节点(localhost)
  • 待处理应用:初始应为0

4.3 运行测试任务

提交一个简单的sleep作业验证:

  1. $YARN_HOME/bin/yarn jar \
  2. $YARN_HOME/share/hadoop/yarn/hadoop-yarn-applications-distributedshell-3.3.4.jar \
  3. --jar $YARN_HOME/share/hadoop/yarn/hadoop-yarn-applications-distributedshell-3.3.4.jar \
  4. --num_containers 2 \
  5. --args "sleep 60"

五、生产环境优化建议

5.1 日志管理方案

配置log4j.properties实现日志分级存储

  1. log4j.logger.org.apache.hadoop.yarn=INFO, console, rollingfile
  2. log4j.appender.rollingfile=org.apache.log4j.RollingFileAppender
  3. log4j.appender.rollingfile.File=/var/log/yarn/yarn.log
  4. log4j.appender.rollingfile.MaxFileSize=100MB

5.2 监控告警集成

推荐Prometheus+Grafana监控方案:

  1. # prometheus.yml 配置示例
  2. scrape_configs:
  3. - job_name: 'yarn'
  4. metrics_path: '/jmx'
  5. static_configs:
  6. - targets: ['localhost:8088']

5.3 备份恢复策略

定期备份以下关键文件:

  1. # 配置文件备份
  2. tar -czvf yarn-config-backup-$(date +%Y%m%d).tar.gz \
  3. $YARN_HOME/etc/hadoop/yarn-site.xml \
  4. $YARN_HOME/etc/hadoop/fair-scheduler.xml
  5. # 日志轮转配置
  6. /etc/logrotate.d/yarn:
  7. /var/log/yarn/*.log {
  8. daily
  9. rotate 7
  10. compress
  11. missingok
  12. }

六、常见问题解决方案

6.1 内存不足错误

现象:Container killed by YARN for exceeding memory limits
解决方案:

  1. 调整yarn.nodemanager.resource.memory-mb参数
  2. 检查应用是否配置了正确的mapreduce.map.memory.mb

6.2 端口冲突问题

诊断命令:

  1. netstat -tulnp | grep -E '8088|8042'
  2. # 若发现冲突,修改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

  1. <property>
  2. <name>yarn.application.classpath</name>
  3. <value>
  4. $HADOOP_CONF_DIR,
  5. $HADOOP_COMMON_HOME/share/hadoop/common/*,
  6. $HADOOP_COMMON_HOME/share/hadoop/common/lib/*,
  7. /opt/tensorflow/lib/*
  8. </value>
  9. </property>

7.2 混合工作负载管理

使用Capacity Scheduler实现批处理和流式作业的隔离:

  1. <property>
  2. <name>yarn.scheduler.capacity.root.queues</name>
  3. <value>batch,streaming</value>
  4. </property>
  5. <property>
  6. <name>yarn.scheduler.capacity.root.batch.capacity</name>
  7. <value>70</value>
  8. </property>

本指南系统梳理了单机部署Yarn的全流程,从环境准备到生产优化提供了可落地的实施方案。实际部署时,建议先在测试环境验证配置参数,再逐步迁移到生产环境。对于数据量超过50TB/日的场景,建议评估分布式部署方案以获得更好的资源隔离和扩展性。

相关文章推荐

发表评论