Hadoop介绍
一、Hadoop 是什么
Apache Hadoop是 Apache 基金会开源的分布式存储与计算框架,用 Java 编写,适合在廉价服务器集群上处理TB/PB 级海量数据,是大数据时代的核心基础设施Apache Hadoop。
- 核心设计思想:分而治之、移动计算而非移动数据。
- 起源:2002 年始于 Nutch 搜索引擎项目,受 Google GFS 与 MapReduce 论文启发;2006 年成为独立项目,名字源自 Doug Cutting 儿子的玩具大象。
- 核心优势:高可靠(多副本)、高扩展(横向加节点)、高容错、低成本。
二、核心组件(Hadoop 2.x/3.x)
Hadoop 核心由HDFS、YARN、MapReduce、Common四部分组成Apache Hadoop。
1. HDFS(分布式文件系统)—— 存储核心
- 作用:解决海量数据分布式存储,支持高吞吐量、大文件(GB~TB)。
- 架构(主从):
- NameNode(NN):主节点,存元数据(文件名、目录、块位置映射),不存实际数据;HDFS “大脑”。
- DataNode(DN):从节点,存实际数据块(默认128MB / 块),定期向 NN 汇报心跳与块状态。
- SecondaryNameNode(SNN):辅助 NN,定期合并元数据日志,非备机(HA 靠 JournalNode)。
- 关键机制:多副本(默认 3 份)→ 节点故障不丢数据。
2. YARN(资源调度框架)—— 资源管家
- 作用:集群资源管理 + 任务调度,支持多计算引擎(MapReduce、Spark、Flink)。
- 架构:
- ResourceManager(RM):全局资源调度,分配 CPU / 内存,接收作业提交。
- NodeManager(NM):节点代理,管理本机资源,启动 / 监控 Container(任务运行容器)。
- ApplicationMaster(AM):单个作业管家,向 RM 申请资源,与 NM 协作执行任务。
3. MapReduce(分布式计算框架)—— 计算引擎
- 作用:离线并行计算,将任务拆分为 Map(映射)+ Reduce(归约)两阶段。
- Map 阶段:数据分片,并行处理,输出中间键值对。
- Reduce 阶段:汇总相同 key 的中间结果,输出最终结果。
- 现状:Hadoop 原生计算引擎,离线场景仍用;实时 / 迭代计算多用 Spark/Flink 替代。
4. Hadoop Common
- 核心工具库,提供配置、日志、序列化、RPC等基础服务,支撑其他组件运行Apache Hadoop。
三、Hadoop 生态系统(常用工具)
- Hive:SQL 化数据仓库,将 SQL 转为 MapReduce/Spark 任务,降低大数据分析门槛。
- HBase:分布式 NoSQL 数据库,支持随机实时读写,适合海量结构化数据。
- Spark:内存计算引擎,比 MapReduce 快 100 倍,支持批处理、流处理、机器学习。
- Flink:实时计算引擎,高吞吐、低延迟,适合实时数据分析。
- ZooKeeper:分布式协调服务,用于 NN/HA、RM 选主、配置同步。
- Sqoop:数据迁移工具,实现 Hadoop 与关系型数据库(MySQL/Oracle)双向导入导出。
- Flume:日志采集工具,高可靠收集、聚合、传输海量日志数据到 HDFS/HBase。
四、核心工作流程(以文件写入 + MapReduce 为例)
- 文件写入 HDFS:客户端切块 → NN 分配 DN 列表 → 数据块并行写入 DN → 副本同步 → NN 记录元数据。
- MapReduce 任务运行:作业提交 → RM 分配资源 → AM 启动 Map 任务 → 读取 HDFS 数据 → Map 输出中间结果 → Shuffle 排序 → Reduce 汇总 → 结果写入 HDFS。
五、版本演进
- 1.x(2011):核心 HDFS + MapReduce,无 YARN,资源调度与计算耦合,扩展性差。
- 2.x(2013):引入YARN,分离资源管理与计算;支持 HDFS HA(双 NN),解决单点故障。
- 3.x(2017):性能优化、支持 ** 纠删码(EC)** 替代多副本(节省 50% 存储)、更高 HA 可靠性、容器化支持。
六、应用场景
- 离线数据分析:日志分析、用户行为分析、数据仓库。
- 海量数据存储:数据湖、归档存储、非结构化数据(图片 / 视频 / 文档)。
- 数据挖掘与机器学习:训练海量数据模型。
- 金融 / 电商:交易日志分析、用户画像、风险控制。
七、优缺点
优点
- 高可靠:数据多副本,容错性强。
- 高扩展:可动态增加节点至数千台。
- 低成本:基于普通 x86 服务器,无需高端硬件。
- 高吞吐:适合批量处理 TB/PB 级数据。
缺点
- 延迟高:离线计算,不适合实时场景。
- 小文件问题:大量小文件消耗 NN 内存,影响性能。
- 编程门槛:原生 MapReduce 需 Java 编程,Hive 降低门槛但仍有学习成本。
总结
Hadoop 是大数据存储与计算的基石,通过 HDFS 解决海量存储、YARN 统一资源调度、MapReduce 提供离线计算能力,搭配 Hive、Spark、HBase 等工具形成完整生态,广泛应用于企业级大数据处理场景。
