一、Hadoop 工作原理
Hadoop 是分布式计算框架,核心设计包含 存储(HDFS)、计算(MapReduce) 和 资源调度(YARN) 三大模块:
-
分布式文件系统(HDFS)
- 数据分块存储:文件被拆分为 128MB/256MB 的块(可配置),存储在不同节点上,默认保存 3 个副本以保障容错性。
- 主从架构:NameNode 管理元数据(如文件目录结构),DataNode 存储实际数据块。
-
计算模型(MapReduce)
- 分治策略:任务分解为 Map 阶段(数据分片处理)和 Reduce 阶段(结果汇总),通过并行计算提升效率。
- 容错机制:TaskTracker 监控任务执行,失败任务自动重新分配。
-
资源调度(YARN)
- 统一资源管理:ResourceManager 分配集群资源(CPU、内存),NodeManager 在节点上执行具体任务。
- 多框架支持:允许 Spark、Flink 等计算引擎共享集群资源。
二、Hadoop 使用场景
Hadoop 适用于 大规模离线批处理,典型场景包括:
- 日志分析:处理 TB/PB 级日志数据(如用户行为日志清洗、聚合)。
- 数据仓库:通过 Hive 将结构化数据存储在 HDFS 上,支持 SQL 查询与报表生成。
- 历史数据归档:低成本存储冷数据(如企业历史交易记录)。
三、Hadoop 与其他系统的联系
Hadoop 是 大数据生态的基石,与其他组件形成互补:
组件 | 与 Hadoop 的协作关系 | 典型场景示例 |
---|---|---|
Hive | 基于 HDFS 存储数据,将 HiveQL 转换为 MapReduce/Tez/Spark 任务执行。 | 离线数据聚合(如电商年度销售统计)。 |
Spark | 利用 YARN 调度资源,替代 MapReduce 进行内存加速计算(如机器学习模型训练)。 | 用户画像更新、交互式查询。 |
Flink | 与 YARN 集成实现资源管理,共用 HDFS 作为数据源/存储层(如实时统计结果写入 HDFS)。 | 离线+实时混合计算(如风控模型离线训练+实时预测)。 |
Kafka/Flume | Flume 采集数据写入 HDFS,Kafka 作为实时数据管道(如日志采集→HDFS 存储→Spark 分析)。 | 日志全链路处理(采集→存储→计算)。 |
四、总结
- 核心定位:Hadoop 提供 分布式存储与批处理能力,是大数据生态的底层基础设施。
- 生态协作:
- 存储层:HDFS 是 Hive、HBase、Spark 等组件的公共存储底座。
- 资源层:YARN 统一管理 Spark、Flink 等计算框架的资源分配。
- 适用边界:适合高吞吐、低时效性场景,需结合 Spark/Flink 实现实时能力。
附录:典型架构示例
graph TD
A[Flume/Kafka] --> B(HDFS)
B --> C{Hive/MapReduce}
B --> D{Spark/Flink}
C --> E[离线报表]
D --> F[实时告警/模型]
E & F --> G[BI工具]
大数据技术组合应用场景及选取标准
一、技术组合的常见模式
大数据组件通常根据需求混合使用,形成互补的架构体系,而非孤立部署。以下为典型组合模式:
-
实时数仓(流批一体)
- 数据采集:Flume从日志服务器采集数据,通过Kafka缓冲(削峰解耦)
- 流处理:Flink消费Kafka数据,实时计算指标(如用户行为统计)并写入HBase供查询
- 批处理:Hive定时聚合HBase或HDFS中的历史数据,生成离线报表
- 存储层:HBase存储实时查询数据,HDFS存储离线分析数据
-
机器学习与实时推荐
- 特征工程:Spark基于Hive表进行离线特征计算(如用户画像)
- 实时推理:Flink读取Kafka中的用户行为流,结合Spark生成的模型实时推荐
- 存储与反馈:HBase存储用户画像,Kafka传递推荐结果到前端
二、技术选取的核心标准
-
数据类型与时效性
- 实时流数据:Flink(低延迟处理)、Kafka(高吞吐缓冲)
- 离线批量数据:Hive(SQL分析)、Spark(复杂计算)
-
存储与查询需求
- 随机读写:HBase(低延迟查询)
- 大规模分析:HDFS+Hive(低成本存储与聚合)
-
系统扩展性与生态兼容性
- 资源管理:Hadoop YARN统一调度Spark/Flink任务
- 数据管道:Flume+Kafka实现采集与传输解耦
三、实现案例:电商实时风控系统
-
数据采集与传输
- Flume实时采集用户行为日志(如点击、下单)发送至Kafka
- Kafka分Topic存储不同行为数据(如支付、风控事件)
-
实时处理与存储
- Flink消费Kafka数据,检测异常行为(如高频刷单)并触发告警
- 风险记录实时写入HBase,供前端查询用户风险等级
-
离线分析与模型训练
- Hive清洗历史数据生成用户画像表,Spark训练反欺诈模型
- 模型参数定期更新至HBase,供Flink实时调用
-
组件协作关系
graph LR A[Flume] --> B[Kafka] B --> C[Flink] C --> D[HBase] B --> E[Spark] E --> F[Hive] F --> G[HDFS]
四、总结
- 组合必要性:单一技术无法满足多样化的数据处理需求(如实时+离线、存储+计算)
- 架构设计原则:
- 实时链路选用Flink+Kafka+HBase保证低延迟
- 离线链路依赖Hive+Spark+HDFS实现高吞吐
- 资源层通过YARN统一管理集群资源
- 典型依赖关系:Hive需依赖Hadoop,HBase依赖HDFS,Flink/Spark可独立或集成YARN。