主流大数据处理框架(如Hadoop、Spark、Flink)的对比
下面把Hadoop主要指 MapReduce HDFS 生态、Spark、Flink 放在同一张表里看重点不是“谁最好”而是“谁适合什么任务”。一、一句话定位Hadoop大数据基石擅长超大规模离线批处理 廉价存储。Spark内存计算引擎擅长批处理、SQL 分析、机器学习、离线 ETL。Flink原生流处理引擎擅长实时流计算、事件驱动、金融风控、IoT。二、核心维度对比维度HadoopMapReduceApache SparkApache Flink设计哲学磁盘优先、稳定可靠、分而治之内存优先、DAG 执行、一站式计算流优先、事件驱动、状态驱动处理模型纯批处理有界数据批处理为主Streaming 为微批真流式无界数据优先批是流的特例延迟分钟级小时级秒级分钟级微批毫秒级秒级中间数据频繁落 HDFS 磁盘内存缓存 RDD/DataFrame溢写磁盘内存 StateBackendCheckpoint 落盘执行引擎Map → Shuffle → ReduceDAG 调度 Tungsten 优化Pipeline 事件时间 Watermark迭代计算很差很好ML、图计算很好流处理能力基本不支持Spark Streaming / Structured Streaming微批原生流处理强时间语义处理时间处理时间为主Structured Streaming 支持事件时间Event Time / Ingestion Time / Processing Time乱序/迟到数据不支持有限支持Watermark 窗口支持很好状态管理无状态有限状态需手动缓存/CheckpointKeyed State / Operator StateRocksDB 后端一致性保证Task 重试数据靠 HDFS 多副本批精确一次流可配至少一次/精确一次通常 Exactly-OnceCheckpoint 幂等/事务 sink容错机制数据块复制 Task 重试RDD 血缘重算 Checkpoint分布式快照Chandy-Lamport SavepointSQL 能力Hive SQL离线强Spark SQL 非常成熟Flink SQL 越来越强但生态成熟度略弱于 Spark SQLML / GraphMahout已过时MLlib、GraphX 强Flink ML 在发展中资源调度YARNHadoop 生态Standalone / YARN / Mesos / K8sStandalone / YARN / K8s硬件偏好磁盘大、内存小、便宜机器内存大、CPU 强内存大、低延迟网络、CPU 强学习曲线低层 API 难写但概念简单中SQL/Python 友好中高Watermark、状态、反压较复杂典型场景历史日志清洗、T1 报表、归档 ETL离线数仓、特征工程、Spark SQL、ML 训练实时风控、实时大屏、交易监控、IoT 流三、性能直觉纯离线批处理Spark MapReduceHadoop 只在“已有集群、延迟无所谓、成本极低”时还有价值。机器学习/图计算/反复迭代Spark 明显优于 MapReduce。实时流、乱序事件、复杂窗口Flink Spark Streaming。高吞吐离线 低延迟实时同时存在通常不是二选一而是Spark 做离线Flink 做实时。四、架构角色很重要很多人把 Hadoop 和 Spark/Flink 对立起来其实生产中常是HDFS / Object Storage Kafka Spark批/SQL/ML Flink流 Hive/Iceberg/Hudi表格式Hadoop提供HDFS、YARN、Hive Metastore 等基础设施Spark批计算、SQL、特征、模型训练Flink实时管道、风控、监控、CDC、实时数仓入口五、选型速查离线报表 / 历史数据清洗 / T1 数仓 →Spark / Hive on Spark机器学习、特征工程、大规模 SQL →Spark实时风控、支付反欺诈、订单监控 →FlinkIoT 传感器、日志实时聚合、CEP →Flink数据湖入湖、离线 ETL、湖仓一体 →Spark 主Flink 做实时入湖老系统、超低成本、延迟不敏感 →Hadoop MapReduce 还能用但新项目不建议六、趋势Lambda 架构Spark 批 Flink 流两套→ 维护成本高Kappa / 流批一体Flink 统一流批→ 实时业务主流方向Spark 也在增强流能力但本质仍是微批Flink 也在增强批能力但生态和 SQL 成熟度还略逊 Spark云上常见组合Kafka Flink Spark Iceberg/Hudi ClickHouse/StarRocks