一、各技术核心使用场景
1. Sqoop
- 关系型数据库(MySQL、Oracle等)与Hadoop生态(HDFS、Hive)之间的批量数据传输(导入/导出)。
- 场景:离线历史数据迁移、定期增量数据同步(如每日同步业务数据到Hive做分析)。
2. HDFS
- Hadoop生态的分布式底层存储系统,用于存储大规模文件(GB/TB级)。
- 场景:作为Hive、Spark等工具的底层数据存储,保存日志、历史业务数据等。
3. Spark
- 快速通用的分布式计算引擎,支持批处理、流处理、机器学习等。
- 场景:离线数据清洗与分析(替代MapReduce)、准实时流处理(Spark Streaming)、机器学习模型训练。
4. Hive
- 基于HDFS的数据仓库工具,通过类SQL(HQL)分析结构化数据。
- 场景:离线数据分析、数据仓库构建(ETL)、复杂报表生成(依赖HDFS存储数据,Spark/Tez作为计算引擎)。
5. Flume
- 分布式日志/事件数据采集工具,用于实时或准实时收集流式数据。
- 场景:服务器日志(Nginx、Tomcat)采集并写入HDFS/Kafka,应用埋点数据传输。
6. YARN
- Hadoop的分布式资源管理与调度框架,管理集群CPU、内存等资源。
- 场景:为Spark、MapReduce、Flink等计算框架分配资源,实现多框架共享集群。
7. Azkaban
- 开源工作流调度工具,用于管理依赖关系的批处理任务。
- 场景:调度ETL流程(如Sqoop导入→Hive清洗→Spark分析)、定时执行周期性任务。
8. Airflow
- 代码化工作流编排与调度平台,通过Python定义复杂任务流程。
- 场景:复杂依赖的工作流管理(支持条件分支、并行任务)、数据 pipeline 自动化(与Spark、Hive等集成)。
9. Kafka
- 高吞吐量分布式消息队列,用于实时数据流的传输与存储。
- 场景:实时日志收集管道、流处理引擎(Flink/Spark Streaming)的数据源、系统间异步通信解耦。
二、技术之间的关联关系
1. 数据采集→存储→计算链路
- Flume 采集日志数据 → 写入 Kafka 缓冲 → 实时计算引擎(如 Spark Streaming)消费 Kafka 数据处理;或 Flume 直接写入 HDFS,供 Hive/Spark 离线分析。
Sqoop 将关系型数据库数据导入 HDFS/Hive,通过 Spark 处理后,再用 Sqoop 导出回数据库。
2. 存储与计算依赖
Hive 依赖 HDFS 存储数据,计算任务(HQL)通过 YARN 调度资源,由 Spark/MapReduce 执行。
Spark 可直接读取 HDFS、Hive 表或 Kafka 的数据进行计算,计算资源由 YARN 分配。
3. 调度工具与任务管理
Azkaban/Airflow 调度 Sqoop 数据同步任务、Hive SQL 脚本、Spark 作业,按依赖关系(如“先同步数据,再计算”)有序执行。
YARN 为 Azkaban/Airflow 触发的计算任务(如 Spark 作业)分配资源,确保任务在集群中运行。
4. 实时数据链路核心
Kafka 作为实时数据枢纽:上游通过 Flume 或生产者写入数据,下游供 Spark Streaming/Flink 消费处理,处理结果可写入 HDFS、数据库或回写 Kafka。
5. 资源管理底层支撑
YARN 是 Hadoop 生态的“资源中枢”,为 Spark、MapReduce、Hive 等所有计算任务分配 CPU 和内存,实现集群资源的统一管理与高效利用。