Hadoop/Spark 生态是大数据处理的核心技术体系,专为解决海量数据的存储、计算和分析问题而设计。以下从底层原理到核心组件详细讲解,帮助你快速建立知识框架!
一、为什么需要 Hadoop/Spark?
- 传统单机瓶颈:
- 数据量超过单机存储极限(如PB级数据)
- 计算任务无法在合理时间内完成(如TB级日志分析)
- 核心解决思路:
- 分布式存储:数据拆分到多台机器存储(如HDFS)
- 分布式计算:任务拆分到多台机器并行处理(如MapReduce/Spark)
二、Hadoop 生态详解
1. Hadoop 三大核心组件
组件 | 作用 | 类比解释 |
---|
HDFS | 分布式文件系统,存储海量数据 | 类似Google的GFS,数据切块存储 |
MapReduce | 分布式计算框架(批处理) | 分而治之:Map阶段拆分任务,Reduce阶段汇总结果 |
YARN | 资源调度管理器,协调集群资源分配 | 类似操作系统的任务调度器 |
2. Hadoop 生态扩展工具
工具 | 用途 |
---|
Hive | 用SQL语法操作Hadoop数据(数据仓库工具) |
HBase | 分布式NoSQL数据库(实时读写海量数据) |
ZooKeeper | 分布式协调服务(管理集群节点状态) |
Sqoop | 在Hadoop和关系数据库之间转移数据 |
3. Hadoop 工作流程示例
1. 数据存储:将1TB日志文件存入HDFS → 自动拆分为128MB的块存储在不同机器
2. 计算处理:
- Map阶段:多台机器并行统计每条日志的关键词
- Shuffle阶段:按关键词分组
- Reduce阶段:汇总每个关键词的总出现次数
3. 结果输出:生成关键词频率统计报告
三、Spark 生态详解
1. Spark 核心优势
- 速度比Hadoop快100倍:基于内存计算(Hadoop基于磁盘)
- 一站式解决方案:支持批处理、流处理、机器学习、图计算
- API友好:支持Java/Scala/Python/R多种语言
2. Spark 核心模块
模块 | 功能 |
---|
Spark Core | 底层执行引擎(任务调度、内存管理) |
Spark SQL | 用SQL或DataFrame API处理结构化数据 |
Spark Streaming | 实时流数据处理(微批处理模式) |
MLlib | 机器学习库(分类、聚类、推荐算法) |
GraphX | 图计算库(社交网络分析、路径规划) |
3. Spark vs Hadoop 对比
特性 | Hadoop MapReduce | Spark |
---|
计算速度 | 慢(基于磁盘) | 快(基于内存) |
适用场景 | 离线批处理 | 迭代计算、实时流处理 |
API易用性 | 需手动编写Map/Reduce函数 | 高阶API(DataFrame/SQL) |
资源管理 | 依赖YARN | 自带集群管理器或YARN |
四、Hadoop + Spark 整合架构
[HDFS] 分布式存储
↑
↓
[YARN] 资源管理
↑
↓
[Spark] ←→ [Hive] ←→ [HBase] ←→ [其他工具]
- 典型工作流:
- 用HDFS存储原始数据
- 用Spark SQL处理数据(替代Hive的MapReduce)
- 用MLlib训练机器学习模型
- 结果存回HBase或HDFS
五、应用场景
- Hadoop 典型场景:
- 海量日志离线分析(如电商用户行为分析)
- 历史数据归档存储(如银行交易记录)
- Spark 典型场景:
- 实时推荐系统(如抖音视频推荐)
- 金融风控实时计算(如欺诈交易检测)
- 大规模机器学习(如广告点击率预测)
六、学习路径建议
- 先掌握核心思想:
- 理解分布式存储(HDFS)和计算(MapReduce/Spark)原理
- 动手实践:
- 本地安装Hadoop单机版(或使用Docker镜像)
- 尝试用Spark DataFrame处理CSV文件(类似Pandas语法)
- 逐步深入:
基础 → Hadoop HDFS命令 → MapReduce WordCount示例 → Spark WordCount
进阶 → Hive SQL查询 → Spark Streaming实时计数 → MLlib聚类分析