Hadoop核心组件及其作用概述

Hadoop的核心组件可以概括为"两大基础 "和一个"核心大脑",它们共同构成了分布式数据处理的基石。


核心一:HDFS (Hadoop Distributed File System) - 分布式存储

作用 :负责存储。它是一个高可靠、高扩展性的分布式文件系统,能将超大规模数据集(TB/PB级)拆分成多个数据块,并分散存储在集群的多个普通服务器上。

关键特点与机制:

  • 分块存储:默认将大文件切分为128MB或256MB的固定大小数据块。
  • 多副本冗余:每个数据块会自动创建多个副本(默认3个),存储在不同机器上,防止硬件故障导致数据丢失。
  • 主从架构 :
    • NameNode(主节点):存储文件的元数据(如文件名、目录结构、数据块位置等),是HDFS的"目录管理员"。
    • DataNode(从节点):在本地磁盘上实际存储数据块,并定期向NameNode报告状态。

举例说明 :

假设你有一个大小为520MB 的日志文件 website_logs.txt 要存入HDFS(假设块大小为128MB)。

  1. 分块 :HDFS会将其自动切分成5个块:Block-1 (128MB), Block-2 (128MB), Block-3 (128MB), Block-4 (128MB), Block-5 (8MB)。
  2. 存储与备份 :这5个块会被分发到集群中不同的DataNode上。比如,Block-1 会存储在 DataNode-A、DataNode-C、DataNode-F 上(共3个副本)。
  3. 管理 :NameNode 会记录下 website_logs.txt 由这5个块组成,以及每个块的所有副本存放在哪些DataNode上。当客户端需要读取文件时,只需询问NameNode,即可找到最近的副本位置。

核心二:MapReduce - 分布式计算模型(编程框架)

作用 :负责计算 。它是一种编程模型,用于对海量数据进行并行处理和计算。其思想是"分而治之":将复杂的计算任务分解成两个阶段(Map和Reduce),并在多个节点上并行执行。

工作原理:

  1. Map(映射)阶段 :多个Mapper任务并行工作,读取HDFS上的数据块,对每条数据进行初步处理,输出一系列中间键值对 (key, value)。
  2. Shuffle & Sort(洗牌与排序):系统自动将Map阶段输出的、具有相同key的所有value集中到一起,发送给同一个Reducer。
  3. Reduce(归约)阶段:多个Reducer任务并行工作,接收属于自己的一组键值对,进行汇总、计算等最终处理,并将结果写回HDFS。

举例说明 :统计一个超大文本文档中每个单词出现的次数。

  • 输入:HDFS上的文档被分成多个块。
  • Map阶段 :每个Mapper读取一个数据块。
    • 逐行处理,将每行文本拆分成单词。
    • 对每个单词,输出中间键值对 (单词, 1)。例如,(Hello, 1), (World, 1), (Hello, 1)。
  • Shuffle阶段 :系统将所有相同的单词"洗牌"到一起。例如,所有 (Hello, 1) 的键值对被送到同一个Reducer。
  • Reduce阶段 :每个Reducer处理一个或一组单词。
    • 接收 (Hello, [1, 1, 1, ...]) 这样的输入。
    • 将列表中的1相加,得到最终计数。
    • 输出最终键值对 (Hello, 3) 到HDFS。

核心三:YARN (Yet Another Resource Negotiator) - 资源管理和调度系统

作用 :负责集群资源管理和任务调度 。它是Hadoop 2.0引入的"核心大脑",将资源管理和作业调度/监控的功能从MapReduce中分离出来,使Hadoop不再局限于MapReduce一种计算框架,可以支持Spark、Flink等多种计算引擎。

核心组件与流程:

  • ResourceManager (RM):集群的"总指挥官",负责整个系统的资源(CPU、内存)管理和分配。
  • NodeManager (NM):每个节点上的"工头",负责启动并监控本节点的容器(Container,即资源单元),并向RM汇报。
  • ApplicationMaster (AM):每个具体应用(如一个MapReduce作业)的"项目经理"。它向RM申请资源,并与NM协作来执行和监控具体的任务(如Map Task或Reduce Task)。

举例说明 :当上面提到的"单词统计"MapReduce作业提交到YARN集群时:

  1. 客户端提交作业到 ResourceManager。
  2. ResourceManager 在一个空闲的NodeManager上为这个作业分配一个容器,并启动 ApplicationMaster(即这个MapReduce作业的专属管理者)。
  3. ApplicationMaster 向 ResourceManager 申请运行Map任务和Reduce任务所需的资源。
  4. ResourceManager 根据集群情况,在各个 NodeManager 上分配容器。
  5. ApplicationMaster 指示对应的 NodeManager 在分配到的容器中启动具体的 Map任务 或 Reduce任务。
  6. ApplicationMaster 监控所有任务的执行状态,并在任务失败时申请新资源重试。
  7. 所有任务完成后,ApplicationMaster 向 ResourceManager 注销,并告知客户端作业完成。

总结与关系

核心组件 核心作用 比喻 在单词统计例子中的角色
HDFS 存储 分布式仓库 存储待处理的超大文档,以及处理后的结果文件。
MapReduce 计算逻辑 车间流水线说明书 定义了如何"分块统计单词"并"合并结果"的算法和步骤。
YARN 资源调度 工厂厂长和调度中心 协调集群的CPU和内存,确保Mapper和Reducer任务能获得资源并高效执行。

三者协作流程 :数据首先存储在 HDFS 上 -> 用户提交一个 MapReduce 程序 -> YARN 调度集群资源来执行这个MapReduce程序 -> 程序从 HDFS 读取数据,进行计算 -> 最终结果写回 HDFS。

这种架构使得Hadoop能够以可靠、可扩展的方式处理PB级别的数据。

相关推荐
data analyse 4563 分钟前
服务端访问日志聚合 PV 与 UV 怎么实现?日志采集与口径设计
大数据·前端·数据分析
ZZ2026011517 分钟前
维普露禾平台免费开放,聊聊教育垂直大模型的RAG实现思路
大数据·人工智能·系统架构·知识图谱
小猴子爱上树18 分钟前
跨境电商AI图片翻译工具:批量图片翻译、视频字幕翻译与智能抠图一站式解决
大数据·人工智能·python·音视频
七十二时95623 分钟前
2026 企业级 AI 办公平台选型指南:如何判断哪些 AI 满足企业办公需求
大数据·人工智能
做个文艺程序员24 分钟前
MQ第03篇:RabbitMQ进阶实战:Topic路由+死信队列+延迟消息,SaaS订单超时取消完整方案
分布式·消息队列·rabbitmq·死信队列·延迟队列
古法老登瞎折腾34 分钟前
Hive 源码导读(三):都是 SELECT,为什么有的查询不需要 YARN?
数据仓库·hive·hadoop
康实训39 分钟前
CGA老年综合评估是什么?评估体系、核心维度与行业应用标准解析
大数据·人工智能·实训室·实训室建设
风花一世月1 小时前
[特殊字符] 我把一套分布式消防方案做成了能跑的 3D 沙盘(三架无人机共用一根水带,在线直接玩)
分布式·3d·ai·无人机
SelectDB1 小时前
Doris VARIANT 速查:类型映射、建表写法、索引配置与常见注意点
大数据·数据库·数据分析
计算机编程指导师1 小时前
计算机毕设选题推荐:基于Spark+Django的黄金价格历史数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·python·计算机·spark·django·课程设计·黄金价格