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-ADataNode-CDataNode-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. ApplicationMasterResourceManager 申请运行Map任务和Reduce任务所需的资源。
  4. ResourceManager 根据集群情况,在各个 NodeManager 上分配容器。
  5. ApplicationMaster 指示对应的 NodeManager 在分配到的容器中启动具体的 Map任务Reduce任务
  6. ApplicationMaster监控所有任务的执行状态,并在任务失败时申请新资源重试。
  7. 所有任务完成后,ApplicationMasterResourceManager 注销,并告知客户端作业完成。

总结与关系

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

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

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

posted @ 2026-01-15 14:46  clnchanpin  阅读(7)  评论(0)    收藏  举报