单机部署Yarn全攻略:从环境准备到集群管理
2025.09.17 11:04浏览量:0简介:本文详细介绍了单机环境下部署Yarn的完整流程,涵盖环境准备、安装配置、集群管理以及常见问题解决方案,适合开发者和运维人员参考。
一、引言:为何选择单机部署Yarn?
Yarn(Yet Another Resource Negotiator)作为Apache Hadoop生态系统的核心组件,负责集群资源的统一管理与调度。尽管Yarn通常运行在分布式集群环境中,但在开发测试、小型项目或特定场景下,单机部署Yarn仍具有显著优势:
- 低成本验证:无需搭建复杂集群,快速验证Yarn功能与配置
- 开发环境隔离:为开发者提供独立的资源管理环境
- 教学演示:便于展示Yarn核心机制与API使用
- 轻量级应用:处理中等规模数据时,单机性能足够
本文将系统阐述单机部署Yarn的全流程,从环境准备到高级配置,帮助读者高效完成部署并掌握核心管理技能。
二、环境准备:构建部署基础
2.1 硬件要求
单机部署Yarn对硬件配置有一定要求,建议满足以下最低标准:
组件 | 最低配置 | 推荐配置 |
---|---|---|
CPU | 双核2.0GHz | 四核3.0GHz+ |
内存 | 8GB | 16GB+ |
磁盘 | 50GB可用空间 | 100GB+ SSD |
网络 | 100Mbps以太网 | 千兆以太网 |
关键考量:Yarn的NodeManager会占用较多内存,建议为JVM分配4-8GB堆内存,因此总内存不宜低于8GB。
2.2 软件依赖
部署前需安装以下基础软件:
Java JDK:Yarn依赖Java运行环境,建议安装JDK 8或11(LTS版本)
# Ubuntu示例
sudo apt update
sudo apt install openjdk-11-jdk
java -version # 验证安装
Hadoop共同依赖:Yarn与HDFS、MapReduce共享部分库,需安装Hadoop公共包
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
tar -xzvf hadoop-3.3.4.tar.gz -C /opt/
ln -s /opt/hadoop-3.3.4 /opt/hadoop
SSH服务:Yarn节点间通信依赖SSH,需确保本地SSH服务运行
sudo apt install openssh-server
sudo systemctl start sshd
三、安装与配置:构建Yarn运行环境
3.1 Yarn安装
推荐从Apache官方下载稳定版Yarn包(通常包含在Hadoop发行版中):
# 下载Hadoop(包含Yarn)
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
tar -xzvf hadoop-3.3.4.tar.gz -C /usr/local/
cd /usr/local/
ln -s hadoop-3.3.4 hadoop
3.2 核心配置文件
修改以下关键配置文件(路径:/usr/local/hadoop/etc/hadoop/
):
3.2.1 yarn-site.xml
<configuration>
<!-- 启用ResourceManager HA(单机环境可忽略) -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>false</value>
</property>
<!-- NodeManager内存配置 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8192</value> <!-- 根据实际内存调整 -->
</property>
<!-- 容器虚拟内存比例 -->
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<!-- 日志聚合配置 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
</configuration>
3.2.2 mapred-site.xml(如需运行MapReduce)
<configuration>
<!-- 指定Yarn为MapReduce运行环境 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器配置 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>0.0.0.0:10020</value>
</property>
</configuration>
3.2.3 环境变量设置
编辑/etc/profile
或~/.bashrc
:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
生效配置:
source /etc/profile
四、启动与管理:运行Yarn集群
4.1 启动流程
格式化HDFS(如需使用):
hdfs namenode -format
启动HDFS服务:
start-dfs.sh
启动Yarn服务:
start-yarn.sh
验证服务状态:
jps # 应看到ResourceManager、NodeManager进程
yarn node -list # 查看节点状态
4.2 资源管理实践
4.2.1 动态资源调整
通过修改yarn-site.xml
实时调整资源分配:
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value> <!-- 最小容器内存 -->
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>8192</value> <!-- 最大容器内存 -->
</property>
4.2.2 队列管理
配置capacity-scheduler.xml
实现多队列资源隔离:
<configuration>
<property>
<name>yarn.scheduler.capacity.root.queues</name>
<value>default,dev</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.default.capacity</name>
<value>70</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.dev.capacity</name>
<value>30</value>
</property>
</configuration>
五、高级功能与优化
5.1 日志聚合与分析
启用日志聚合后,可通过以下命令查看历史任务日志:
yarn logs -applicationId <app_id> > app_logs.txt
5.2 性能调优建议
内存优化:
- 调整
yarn.nodemanager.resource.memory-mb
为物理内存的70-80% - 设置
yarn.app.mapreduce.am.resource.mb
为合理值(通常512-2048MB)
- 调整
并行度控制:
<property>
<name>mapreduce.job.maps</name>
<value>4</value> <!-- 根据CPU核心数调整 -->
</property>
容器复用:
<property>
<name>yarn.nodemanager.container-executor.class</name>
<value>org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor</value>
</property>
六、常见问题解决方案
6.1 内存不足错误
现象:Container is running beyond physical memory limits
解决方案:
- 增加
yarn.nodemanager.resource.memory-mb
值 - 调整
yarn.nodemanager.vmem-pmem-ratio
(默认2.1) - 检查是否有内存泄漏的MapReduce作业
6.2 节点无法注册
现象:NodeManager启动但未出现在yarn node -list
中
排查步骤:
- 检查
yarn.resourcemanager.address
配置是否正确 - 查看NodeManager日志:
cat $HADOOP_HOME/logs/yarn-*-nodemanager-*.log
- 验证防火墙设置:
sudo ufw status # Ubuntu
sudo iptables -L # CentOS
6.3 任务执行缓慢
优化建议:
- 启用数据本地性:
<property>
<name>yarn.scheduler.include-port-in-host</name>
<value>false</value>
</property>
- 调整MapReduce任务参数:
<property>
<name>mapreduce.map.memory.mb</name>
<value>1024</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>2048</value>
</property>
七、总结与展望
单机部署Yarn为开发者提供了低成本、高灵活性的资源管理解决方案。通过本文的详细指导,读者已掌握:
- 完整的单机部署流程与环境配置
- Yarn核心参数的调优方法
- 常见问题的诊断与解决技巧
未来发展方向包括:
- 结合Docker实现更轻量级的部署
- 集成Kubernetes实现混合资源管理
- 探索Yarn在边缘计算场景的应用
发表评论
登录后可评论,请前往 登录 或 注册