Hadoop 是一个开源的分布式计算框架,专为处理海量数据(TB/PB 级)设计,具有高容错性、高扩展性和低成本的特点。它的核心是分布式存储和分布式计算两大能力,通过集群化部署实现对大规模数据的高效处理。
Hadoop 框架的核心架构
Hadoop 框架主要由以下四个核心模块构成:
1. HDFS(Hadoop Distributed File System)
分布式文件系统,负责海量数据的存储。
-
架构设计:
- 主从结构:1 个 NameNode(主节点)+ 多个 DataNode(从节点)
- NameNode:管理文件系统元数据(文件名、路径、权限、块信息等),不存储实际数据
- DataNode:存储实际数据块(Block),默认块大小为 128MB(可配置)
-
核心特性:
- 副本机制:默认每个数据块保存 3 个副本,分布在不同节点,保证数据容错性
- 流式访问:适合一次写入、多次读取的场景,不支持随机修改
- 横向扩展:可通过增加 DataNode 节点轻松扩展存储容量
2. MapReduce
分布式计算框架,负责海量数据的离线处理。
-
核心思想:"分而治之"
- Map 阶段:将大任务拆分为多个小任务,分布式并行处理
- Reduce 阶段:汇总 Map 阶段的结果,计算最终输出
-
执行流程:
- 输入数据被分割成多个 Split(分片)
- 每个 Split 由一个 Map 任务处理,生成 <key, value> 键值对
- Shuffle 过程:对 Map 输出进行排序、分组
- Reduce 任务处理分组后的数据,输出最终结果
-
适用场景:日志分析、数据统计、数据清洗等离线批量处理任务
3. YARN(Yet Another Resource Negotiator)
资源管理器,负责集群资源(CPU、内存)的统一调度和管理。
-
核心组件:
- ResourceManager(RM):全局资源管理器,负责资源分配和任务调度
- NodeManager(NM):运行在每个节点上,负责本节点的资源管理和任务监控
- ApplicationMaster(AM):每个应用程序的管理者,负责与 RM 协商资源并监控任务
-
主要功能:
- 统一管理集群资源,提高资源利用率
- 支持多种计算框架(MapReduce、Spark、Flink 等)共享集群资源
- 动态资源分配,根据任务需求灵活调整资源
4. Hadoop Common
通用工具库,为其他模块提供基础支持。
- 包含文件系统、RPC 通信、序列化、配置管理等工具类
- 提供跨平台的抽象层,适配不同的操作系统和硬件环境
Hadoop 框架的工作流程(示例)
以 "分析网站日志,统计每个页面的访问量" 为例:
-
数据存储:
- 网站日志文件上传到 HDFS,被分割成多个 128MB 的数据块
- 每个数据块在不同 DataNode 上保存 3 个副本
-
任务提交:
- 用户提交 MapReduce 作业到 YARN 的 ResourceManager
-
资源分配:
- RM 为作业分配第一个容器(Container),启动 ApplicationMaster
- AM 向 RM 申请更多资源,用于运行 Map 和 Reduce 任务
-
Map 阶段:
- 每个 Map 任务处理一个数据块,解析日志并输出 <页面 URL, 1> 键值对
-
Shuffle 阶段:
- 对 Map 输出按页面 URL 分组,相同 URL 的计数累加
-
Reduce 阶段:
- 每个 Reduce 任务汇总相同 URL 的访问次数,输出 <页面 URL, 总访问量>
-
结果输出:
- 最终结果写入 HDFS,用户可通过命令行或其他工具查看
Hadoop 框架的优势
- 高容错性:通过数据副本和节点故障自动转移实现
- 高扩展性:可通过增加节点线性扩展存储和计算能力
- 低成本:支持普通 x86 服务器,无需专用硬件
- 适合大数据:高效处理 TB/PB 级数据,远超传统数据库能力
- 开源生态:拥有丰富的周边工具(Hive、HBase、Spark 等),形成完整数据处理体系
Hadoop 框架的应用场景
- 日志分析:用户行为分析、系统监控日志处理
- 数据仓库:构建企业级数据存储和分析平台
- 机器学习:训练大规模数据集的机器学习模型
- 搜索引擎:处理网页爬取数据,构建索引
- 科学计算:处理天文、气象等领域的海量观测数据
Hadoop 框架的设计理念是 "移动计算而非移动数据",通过将计算任务分发到数据所在节点,大幅减少数据传输开销,这也是它能高效处理海量数据的核心原因。
942

被折叠的 条评论
为什么被折叠?



