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级别的数据。

相关推荐
7 小时前
TIDB——TIDB Server
数据库·分布式·tidb
emfuture7 小时前
传统劳动密集型加工厂,面对日益普及的自动化技术,应如何实现转型升级?
大数据·人工智能·智能制造·工业互联网
云老大TG:@yunlaoda3607 小时前
腾讯云国际站代理商 ACE有什么优势呢?
大数据·云计算·腾讯云
驾驭人生8 小时前
RabbitMQ 封装,基于原生 RabbitMQ.Client 实现
分布式·rabbitmq
百胜软件@百胜软件9 小时前
重塑零售未来:百胜智能中台+胜券AI,赋能品牌零售撬动3100亿增量市场
大数据·人工智能·零售
小辉懂编程9 小时前
Spark sql 常用时间函数 to_date ,datediff
大数据·sql·spark
武子康20 小时前
大数据-184 Elasticsearch Doc Values 机制详解:列式存储如何支撑排序/聚合/脚本
大数据·后端·elasticsearch
expect7g21 小时前
Paimon源码解读 -- Compaction-8.专用压缩任务
大数据·后端·flink
良策金宝AI1 天前
从CAD插件到原生平台:工程AI的演进路径与智能协同新范式
大数据·人工智能