Hadoop基础认知——HDFS、YARN、MapReduce在现代体系中的位置与价值
写在前面,本人目前处于求职中,如有合适内推岗位,请加:lpshiyue 感谢。 在深入探讨了数据平台的全景与角色分工之后,我们触及了现代数据体系的基石。无论是 OLTP 的实时交易,还是 OLAP 的深度分析,其背后都需要强大的底层基础设施来支撑海量数据的存储与计算。本文将聚焦于大数据领域的奠基者——Hadoop,解析其核心组件 HDFS、YARN 与 MapReduce 的经典架构、协同原理及其在当今技术浪潮中的独特价值。 Hadoop 并非凭空诞生,它源于互联网时代一个根本性的挑战:当数据规模远超单机极限,我们该如何存储和处理它? 在 2000 年代初,Google 面临索引整个互联网的难题。其给出的答案是两篇划时代的论文:关于分布式文件系统的 GFS 和关于分布式计算的 MapReduce。Hadoop 正是这两大思想的开源实现,它要解决的核心问题可以归结为三点: Hadoop 的核心理念是 “移动计算比移动数据更划算”。与其将海量数据通过网络传输到计算程序所在的地方,不如将小巧的计算程序发送到数据存储的节点上本地执行。这一理念贯穿于其三大核心组件的设计之中。 HDFS 是 Hadoop 的存储基石,它的设计目标非常明确:一次写入,多次读取,以流式数据访问模式来存储超大文件。 HDFS 采用了经典的主从架构: 尽管对象存储(如 AWS S3)如今常被用作 HDFS 的替代品,但 HDFS 在特定场景下仍有其不可替代的价值: MapReduce 是一种编程模型,其核心思想是 “分而治之”。它将复杂的计算任务分解为两个阶段:Map 和 Reduce,使得开发者无需关心分布式计算的底层细节(如网络通信、容错等),只需专注于实现业务逻辑。 以一个经典的词频统计任务为例,其流程如下: Map 阶段: Reduce 阶段: MapReduce 的强大还在于其容错性。如果某个节点上的 Map 或 Reduce 任务失败,YARN 会自动在另一个健康的节点上重新启动该任务,因为输入数据在 HDFS 上是有副本的。 然而,MapReduce 模型也有其局限性。由于每个阶段(尤其是 Shuffle)都涉及磁盘 I/O,因此它更擅长批处理,而对迭代式计算(如机器学习)和交互式查询的延迟较高。这也催生了 Spark 等内存计算框架的兴起。 在 Hadoop 1.x 时代,MapReduce 自身负责资源管理,这导致集群只能运行 MapReduce 一种计算框架,资源利用率低且孤立。YARN 的诞生,解耦了资源管理与计算框架,是 Hadoop 从“一套系统”演变为“一个平台”的关键。 YARN 同样采用了主从架构: YARN 的价值在于其通用性。它本身不关心运行的是 MapReduce、Spark、Flink 还是 Tez。它作为一个统一的资源管理和调度平台,允许多种计算框架在同一个集群上共享资源,提高了集群利用率,并简化了运维。在今天,YARN 依然是许多大规模 Hadoop 集群不可或缺的底层调度系统。 HDFS、MapReduce 和 YARN 共同构成了一个完整的闭环。 协同工作流程:用户编写的 MapReduce 程序被打成 JAR 包提交给 YARN。YARN 的 ResourceManager 为作业分配 ApplicationMaster。ApplicationMaster 根据输入数据在 HDFS 上的位置(通过询问 NameNode 获得),向 YARN 申请在存储了相应数据块的 DataNode 上启动 Map 任务,以实现“计算向数据靠拢”。Map 任务处理本地数据,Reduce 任务通过网络拉取数据并进行汇总,最终结果写回 HDFS。 在现代数据生态中的位置:尽管如今 Spark、Flink 等更快速、更灵活的计算框架大放异彩,但 Hadoop 三要素并未过时,而是找到了新的定位: 可以说,Hadoop 生态系统从“一套特定技术”演变成了“一系列技术选择的基石”。新一代的计算框架大多选择与 HDFS 兼容,并可以运行在 YARN 之上,这本身就是对 Hadoop 核心组件设计价值的肯定。 Hadoop 的核心三要素为解决大数据问题提供了一套经过实践检验的、完整的基础范式。HDFS 解决了“数据怎么存”,MapReduce 解决了“计算怎么做”,YARN 解决了“资源怎么分”。它们所体现的分治、容错、可扩展的设计思想,至今仍是构建分布式系统的黄金法则。 理解 Hadoop,不仅是掌握一套工具,更是建立一种应对海量数据挑战的基础性思维框架。即使在云原生和实时计算成为潮流的今天,这套框架所解决的存储、计算和调度问题,依然是任何数据平台架构师需要深刻理解的根本命题。 📚 下篇预告 点击关注,掌握离线数据仓库的构建精髓! 今日行动建议:HDFS 是海量数据的基座,MapReduce 是批量计算的引擎,而 YARN 是集群资源的调度者——它们共同构成了大数据处理的“古典三位一体”。
1 Hadoop 的起源与核心命题
2 HDFS:分布式存储的基石
2.1 架构与核心组件
2.2 关键机制与设计哲学
2.3 现代体系中的价值
3 MapReduce:分布式计算的灵魂
3.1 核心工作流程
“Hello World Hello”,Map 函数会输出 [("Hello", 1), ("World", 1), ("Hello", 1)] 这样的键值对。[("Hello", [1, 1]), ("World", [1])]。“Hello” 进行求和计算:1+1=2。[("Hello", 2), ("World", 1)]。3.2 容错与局限性
4 YARN:集群资源的“大管家”
4.1 架构与核心组件
4.2 工作流程示例
4.3 现代体系中的核心价值
5 三位一体:协同工作原理与在现代数据生态中的位置
6 总结与展望
《Hive与离线数仓方法论——分层建模、分区与桶的取舍与查询代价》—— 我们将深入探讨:hdfs dfs 命令和运行 WordCount 示例程序。hadoop fs -put 上传一个文本文件到 HDFS,观察其被分成了几个块。http://<resourcemanager-host>:8088)提交一个 MapReduce 作业,直观理解其资源申请和执行流程。