Yarn 详细指南:从基础概念到实战操作

一、Yarn 概述

在大数据领域,Hadoop 作为核心框架发挥着重要作用,而 Hadoop 三大件(HDFS、MapReduce、Yarn)更是其关键组成部分。其中,**Yarn(Yet Another Resource Negotiator)** 堪称大数据集群的 “操作系统”,它不仅为 MapReduce 等计算框架提供运行环境,还肩负着资源管理与任务调度的核心职责。

1. 核心定位

  • 资源管理中枢:统一管理集群中的内存、CPU、带宽等资源,实现资源的高效分配与隔离。
  • 计算框架的基石:最初作为 Hadoop 的一部分支持 MapReduce 运行,如今已发展为独立的资源管理系统,可支撑 Spark、Flink 等多种计算框架。
  • 架构的独立性:虽起源于 Hadoop 生态,但通过模块化设计实现了与 Hadoop 的解耦,成为通用的分布式资源管理平台。

2. 核心优势

  • 资源利用率最大化:通过动态资源调度机制,避免资源闲置,提升集群整体利用率。
  • 多框架兼容性:支持多种计算框架共存,实现工作负载的混合部署与统一管理。
  • 高可用性与扩展性:采用主从架构(ResourceManager + NodeManager),支持集群节点的动态扩展与故障容错。

二、Yarn 的组成架构

Yarn 采用典型的主从架构,由ResourceManager(RM)NodeManager(NM)两大核心组件构成,辅以ApplicationMaster(AM)Container实现任务的全生命周期管理。

1. 核心组件解析

组件角色描述核心功能
ResourceManager(RM)主节点,集群资源的总调度器- 全局资源管理与分配
- 处理 ApplicationMaster 的资源请求
- 监控 NodeManager 状态,维护集群拓扑信息
NodeManager(NM)从节点,单节点资源管理者- 管理单个节点的 CPU、内存等资源
- 启动并监控 Container 生命周期
- 向 ResourceManager 汇报节点状态与资源使用情况
ApplicationMaster(AM)应用程序的 “管家”- 为应用程序申请资源并分配给任务
- 监控任务运行状态,处理任务失败与重试
- 与 ResourceManager 和 NodeManager 通信协调资源
Container资源分配的最小单位- 封装 CPU、内存等资源的具体分配量
- 作为任务运行的沙箱环境,隔离不同应用的资源使用

三、Yarn 的配置与搭建

以下操作基于 Hadoop 3.3.6 版本,假设集群已有 3 节点(node01、node02、node03),需在 **/opt/installs/hadoop** 路径下完成配置。

1. 配置文件路径

所有配置文件位于/opt/installs/hadoop/etc/hadoop/目录,核心文件包括:

  • hadoop-env.sh:Hadoop 环境变量配置(需确保 Java 路径正确)
  • mapred-site.xml:MapReduce 运行时配置(指定 Yarn 为资源管理器)
  • yarn-site.xml:Yarn 核心配置

2. 关键配置步骤

(1)检查与配置权限

vi hadoop-env.sh
# 确保以下配置存在(示例)
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export HADOOP_HOME=/opt/installs/hadoop
(2)防止 AppMaster 错误(内存配置)

xml

<!-- yarn-site.xml -->
<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>8192</value> <!-- 单节点可用内存,根据实际调整 -->
</property>
<property>
    <name>yarn.nodemanager.vmem-pmem-ratio</name>
    <value>2.1</value> <!-- 虚拟内存与物理内存比例,默认2.1 -->
</property>
(3)获取 ClassPath(可选,用于调试)

# 在Hadoop安装目录执行
hadoop classpath --glob
(4)分发配置文件

mapred-site.xmlyarn-site.xml同步到其他节点:

scp mapred-site.xml node02:/opt/installs/hadoop/etc/hadoop/
scp mapred-site.xml node03:/opt/installs/hadoop/etc/hadoop/
scp yarn-site.xml node02:/opt/installs/hadoop/etc/hadoop/
scp yarn-site.xml node03:/opt/installs/hadoop/etc/hadoop/

3. 启动与停止命令

服务启动命令停止命令Web 监控地址
HDFSstart-dfs.shstop-dfs.shhttp://node01:50070
Yarnstart-yarn.shstop-yarn.shhttp://node01:8088
全集群start-all.shstop-all.sh-
单独启动 ResourceManageryarn --daemon start resourcemanageryarn --daemon stop resourcemanager-
单独启动 NodeManageryarn --daemon start nodemanageryarn --daemon stop nodemanager-

四、实战案例:用 Yarn 运行 WordCount

1. 准备数据

(1)创建测试文件wc.txt

echo "hadoop spark hello hadoop" > wc.txt
echo "spark hello flink world" >> wc.txt
echo "scala python python scala" >> wc.txt
(2)上传至 HDFS

hdfs dfs -mkdir /home
hdfs dfs -put wc.txt /home

2. 执行 WordCount 任务

利用 Hadoop 自带的 MapReduce 示例程序:

hadoop jar /opt/installs/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /home/wc.txt /home/output

3. 查看结果

hdfs dfs -cat /home/output/part-r-00000
# 输出示例:
# hadoop 2
# hello 2
# spark 2
# flink 1
# world 1
# scala 2
# python 2

4. 监控任务运行

  • Yarn Web 界面:访问 http://node01:8088,在 “Applications” 中查看任务状态。
  • 日志查看:任务日志存储于/opt/installs/hadoop/logs/userlogs/目录,可通过节点 SSH 登录查看。

五、集群管理实用技巧

1. 时间同步(重要!)

集群节点时间不一致会导致服务异常,建议使用 NTP 同步:

# 编写同步脚本xcall.sh(需提前安装expect)
#!/usr/bin/expect -f
set hosts [lrange $argv 0 end]
foreach host $hosts {
    spawn ssh $host ntpdate time1.aliyun.com
    expect {
        "assword:" { send "你的密码\n"; exp_continue }
        "succeeded" { puts "$host 时间同步成功" }
        default { puts "$host 时间同步失败" }
    }
}

# 执行同步(假设节点为node01、node02、node03)
xcall.sh node01 node02 node03

2. 资源调优建议

  • 单节点内存yarn.nodemanager.resource.memory-mb建议设置为物理内存的 80%。
  • 虚拟内存比例:若任务频繁报 “Container killed”,可适当降低yarn.nodemanager.vmem-pmem-ratio(如调整为 2.0)。
  • 队列调度:通过capacity-scheduler.xmlfair-scheduler.xml配置资源队列,实现多租户资源隔离。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值