解决Keil uVision光标错位与花屏:编码兼容性与系统渲染冲突的根治方案
2026/6/5 21:04:21
Hadoop的核心组件可以概括为“两大基础”和一个“核心大脑”,它们共同构成了分布式数据处理的基石。
作用:负责存储。它是一个高可靠、高扩展性的分布式文件系统,能将超大规模数据集(TB/PB级)拆分成多个数据块,并分散存储在集群的多个普通服务器上。
关键特点与机制:
举例说明:
假设你有一个大小为520MB的日志文件website_logs.txt要存入HDFS(假设块大小为128MB)。
Block-1(128MB),Block-2(128MB),Block-3(128MB),Block-4(128MB),Block-5(8MB)。Block-1会存储在DataNode-A、DataNode-C、DataNode-F上(共3个副本)。NameNode会记录下website_logs.txt由这5个块组成,以及每个块的所有副本存放在哪些DataNode上。当客户端需要读取文件时,只需询问NameNode,即可找到最近的副本位置。作用:负责计算。它是一种编程模型,用于对海量数据进行并行处理和计算。其思想是“分而治之”:将复杂的计算任务分解成两个阶段(Map和Reduce),并在多个节点上并行执行。
工作原理:
(key, value)。举例说明:统计一个超大文本文档中每个单词出现的次数。
(单词, 1)。例如,(Hello, 1),(World, 1),(Hello, 1)。(Hello, 1)的键值对被送到同一个Reducer。(Hello, [1, 1, 1, ...])这样的输入。(Hello, 3)到HDFS。作用:负责集群资源管理和任务调度。它是Hadoop 2.0引入的“核心大脑”,将资源管理和作业调度/监控的功能从MapReduce中分离出来,使Hadoop不再局限于MapReduce一种计算框架,可以支持Spark、Flink等多种计算引擎。
核心组件与流程:
举例说明:当上面提到的“单词统计”MapReduce作业提交到YARN集群时:
ResourceManager。ResourceManager在一个空闲的NodeManager上为这个作业分配一个容器,并启动ApplicationMaster(即这个MapReduce作业的专属管理者)。ResourceManager申请运行Map任务和Reduce任务所需的资源。ResourceManager根据集群情况,在各个NodeManager上分配容器。NodeManager在分配到的容器中启动具体的Map任务或Reduce任务。ApplicationMaster向ResourceManager注销,并告知客户端作业完成。| 核心组件 | 核心作用 | 比喻 | 在单词统计例子中的角色 |
|---|---|---|---|
| HDFS | 存储 | 分布式仓库 | 存储待处理的超大文档,以及处理后的结果文件。 |
| MapReduce | 计算逻辑 | 车间流水线说明书 | 定义了如何“分块统计单词”并“合并结果”的算法和步骤。 |
| YARN | 资源调度 | 工厂厂长和调度中心 | 协调集群的CPU和内存,确保Mapper和Reducer任务能获得资源并高效执行。 |
三者协作流程:数据首先存储在HDFS上 -> 用户提交一个MapReduce程序 ->YARN调度集群资源来执行这个MapReduce程序 -> 程序从HDFS读取数据,进行计算 -> 最终结果写回HDFS。
这种架构使得Hadoop能够以可靠、可扩展的方式处理PB级别的数据。