简介:本文详细介绍了单机环境下部署Yarn的完整流程,涵盖环境准备、安装配置、集群管理以及常见问题解决方案,适合开发者和运维人员参考。
Yarn(Yet Another Resource Negotiator)作为Apache Hadoop生态系统的核心组件,负责集群资源的统一管理与调度。尽管Yarn通常运行在分布式集群环境中,但在开发测试、小型项目或特定场景下,单机部署Yarn仍具有显著优势:
本文将系统阐述单机部署Yarn的全流程,从环境准备到高级配置,帮助读者高效完成部署并掌握核心管理技能。
单机部署Yarn对硬件配置有一定要求,建议满足以下最低标准:
| 组件 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | 双核2.0GHz | 四核3.0GHz+ |
| 内存 | 8GB | 16GB+ |
| 磁盘 | 50GB可用空间 | 100GB+ SSD |
| 网络 | 100Mbps以太网 | 千兆以太网 |
关键考量:Yarn的NodeManager会占用较多内存,建议为JVM分配4-8GB堆内存,因此总内存不宜低于8GB。
部署前需安装以下基础软件:
Java JDK:Yarn依赖Java运行环境,建议安装JDK 8或11(LTS版本)
# Ubuntu示例sudo apt updatesudo apt install openjdk-11-jdkjava -version # 验证安装
Hadoop共同依赖:Yarn与HDFS、MapReduce共享部分库,需安装Hadoop公共包
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gztar -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-serversudo systemctl start sshd
推荐从Apache官方下载稳定版Yarn包(通常包含在Hadoop发行版中):
# 下载Hadoop(包含Yarn)wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gztar -xzvf hadoop-3.3.4.tar.gz -C /usr/local/cd /usr/local/ln -s hadoop-3.3.4 hadoop
修改以下关键配置文件(路径:/usr/local/hadoop/etc/hadoop/):
<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>
<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>
编辑/etc/profile或~/.bashrc:
export HADOOP_HOME=/usr/local/hadoopexport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinexport YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
生效配置:
source /etc/profile
格式化HDFS(如需使用):
hdfs namenode -format
启动HDFS服务:
start-dfs.sh
启动Yarn服务:
start-yarn.sh
验证服务状态:
jps # 应看到ResourceManager、NodeManager进程yarn node -list # 查看节点状态
通过修改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>
配置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>
启用日志聚合后,可通过以下命令查看历史任务日志:
yarn logs -applicationId <app_id> > app_logs.txt
内存优化:
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>
现象:Container is running beyond physical memory limits
解决方案:
yarn.nodemanager.resource.memory-mb值yarn.nodemanager.vmem-pmem-ratio(默认2.1)现象:NodeManager启动但未出现在yarn node -list中
排查步骤:
yarn.resourcemanager.address配置是否正确
cat $HADOOP_HOME/logs/yarn-*-nodemanager-*.log
sudo ufw status # Ubuntusudo iptables -L # CentOS
优化建议:
<property><name>yarn.scheduler.include-port-in-host</name><value>false</value></property>
<property><name>mapreduce.map.memory.mb</name><value>1024</value></property><property><name>mapreduce.reduce.memory.mb</name><value>2048</value></property>
单机部署Yarn为开发者提供了低成本、高灵活性的资源管理解决方案。通过本文的详细指导,读者已掌握:
未来发展方向包括: