当前位置: 首页 > news >正文

深入理解 Hadoop 核心组件 Yarn:架构、配置与实战

一、Hadoop 三大件概述

Hadoop 作为大数据领域的基石,其核心由三大组件构成:

HDFS(分布式文件系统):负责海量数据的分布式存储,通过数据分块和副本机制保障可靠性,是大数据存储的基础设施。

MapReduce(分布式计算框架):基于 “分而治之” 思想,将复杂计算任务拆解为 Map 和 Reduce 阶段,实现大规模数据的并行处理。

Yarn(资源管理器):作为 Hadoop 的 “操作系统”,负责集群资源(内存、CPU、带宽等)的统一管理与调度。它诞生于 Hadoop 生态,如今已演进为独立的通用资源管理系统,可支持 MapReduce、Spark 等多种计算框架运行。

二、Yarn 的核心组成部分

Yarn 采用主从架构,由四大核心组件协同工作:

1. ResourceManager(RM,资源管理器)—— 集群的 “总指挥”

角色:Yarn 集群的唯一主节点,全局管理所有资源(内存 / CPU / 网络等),协调各个应用程序对资源的请求。

关键模块

调度器(Scheduler):根据资源分配策略(如容量调度、公平调度)为应用程序分配资源,不负责监控任务状态。

应用管理器(ApplicationManager):管理所有应用程序的生命周期,包括应用程序提交、失败重试等。

2. NodeManager(NM,节点管理器)—— 单节点的 “大管家”

角色:运行在集群每个节点上,负责管理本节点的资源(CPU / 内存 / 磁盘等),监控容器状态,并与 ResourceManager 通信汇报节点健康情况。

核心职责

启动并监控 Container,

执行 ResourceManager 的资源分配指令。管理本地日志和任务运行环境。

3. Container(容器)—— 资源的 “封装载体”

定义:Yarn 中资源分配的最小单位,封装了一组具体资源(如 2GB 内存 + 1 个 CPU 核心),类似于轻量级虚拟机。

特点

每个 Container 归属于特定应用程序,资源隔离性强。

支持动态扩展,根据任务需求调整资源配置。

4. ApplicationMaster(AM,应用管理器)—— 任务的 “项目经理”

角色:每个应用程序(如 MapReduce 作业)的专属管理者,负责与 ResourceManager 协商资源、与 NodeManager 交互启动任务,并监控作业进度。

核心功能

分解作业为多个任务(如 MapTask/ReduceTask),

并为任务申请资源。处理任务失败和重试,协调任务间依赖关系。

三、Yarn 的配置与搭建实战

1. 环境准备

集群规划:假设 3 节点集群(bigdata01 为主节点,bigdata02/bigdata03 为从节点)。

配置文件路径:所有配置文件位于/opt/installs/hadoop/etc/hadoop/目录。

2. 关键配置步骤

(1)指定 MapReduce 运行平台为 Yarn
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>
(2)配置 ResourceManager 主节点
<property><name>yarn.resourcemanager.hostname</name><value>bigdata01</value> <!-- 主节点主机名 -->
</property>
(3)启用 MapReduce Shuffle 服务(用于数据传输)
<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value>
</property>
(4)配置权限与 Classpath(避免 AppMaster 启动失败)
<!-- hadoop-env.sh中添加 -->
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root<!-- yarn-site.xml中添加 -->
<property><name>yarn.application.classpath</name><value>/opt/installs/hadoop/etc/hadoop:/opt/installs/hadoop/share/hadoop/common/lib/*:...</value> <!-- 完整路径需包含Hadoop各模块依赖 -->
</property>
(5)分发配置文件至从节点
# 在主节点执行
cd /opt/installs/hadoop/etc/hadoop/
xsync.sh mapred-site.xml yarn-site.xml  # xsync为自定义同步脚本,需提前配置

3. 启动与停止命令

服务启动命令停止命令说明
HDFSstart-dfs.shstop-dfs.sh管理 HDFS namenode/datanode
Yarnstart-yarn.shstop-yarn.sh管理 ResourceManager/NodeManager
全集群start-all.shstop-all.sh同时启动 HDFS 和 Yarn
单独启动 RMyarn --daemon start resourcemanageryarn --daemon stop resourcemanager仅操作主节点 RM
单独启动 NMyarn --daemon start nodemanageryarn --daemon stop nodemanager仅操作当前节点 NM

验证启动状态:访问 Yarn Web 界面 http://bigdata01:8088,查看集群资源使用情况和应用列表。

四、Yarn 实战:WordCount 案例

1. 准备数据

本地文件:创建wc.txt并写入内容:

hadoop spark hello hadoop
spark hello flink world
scala python python scala
hdfs dfs -mkdir /home
hdfs dfs -put /home/wc.txt /home

    2. 运行 MapReduce 作业

    # 执行Hadoop自带的WordCount示例
    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

    相关文章:

  • 上路兵线的理解-鳄鱼篇
  • vue3:十三、分类管理-表格--编辑、新增、详情、刷新
  • Android framework 问题记录
  • 整合安全能力:观测云进一步强化数据价值
  • 【内测征集】LarkVR 播控系统上新:VR 应用一站式专业播控与管理工具
  • 避开封禁陷阱:动态IP在爬虫、跨境电商中的落地实践
  • 电脑A和电脑B都无法ping通电脑C网络,电脑C可以ping通电脑A和B,使用新系统测试正常,排除硬件问题。
  • PLC双人舞:profinet转ethernet ip网关奏响施耐德与AB的协奏曲
  • mongodb部署Shard Cluster
  • 【Spring Boot 整合 MongoDB 完整指南】
  • Icecream Video Editor:简单易用的视频编辑软件,轻松打造专业视频
  • 基于51单片机教室红外计数灯光控制—可蓝牙控制
  • npm 安装时 SSL 证书过期问题笔记
  • 2025最新Java基础八股文速记精简版(万字笔记)
  • 【Linux】系统指令与开发全栈(vim、ssh、gcc)
  • 项目中把webpack 打包改为vite 打包
  • c#将json字符串转换为对象数组
  • Electron使用WebAssembly实现CRC-8 ITU校验
  • Electron + Vue 实现系统消息通知与点击跳转页面
  • 如何实现从网页一键启动你的 Electron 桌面应用(zxjapp://)
  • 新华每日电讯:把纪律的螺丝拧得紧而又紧
  • 鸿蒙电脑正式发布,余承东:国产软件起步晚,基础弱,探索面向未来的电脑体验
  • 六旬老人举报违建后遭蒙面袭击续:海南陵水县住建局已暂停俩房产项目网签
  • 半年不到再换岗:伊春市委常委、政法委书记方春彪任伊春森工集团党委书记
  • 印军称中国向巴基斯坦提供防空系统协助,外交部:中方十分重视与印、巴两国关系
  • 聘期三年已至:37岁香港青年叶家麟卸任三亚市旅游发展局局长