大数据基础组件发展史
从 2003 年 Google 三篇论文,到今天的湖仓时代。按时间轴看清每个组件的作用,以及"谁取代了谁"。
一、同类能力的替代链(先看这个)
每一行是一类"能力",从左到右是历史演进。灰色=已淘汰/边缘化,高亮描边=当前主流。混乱的根源在于——不同组件其实在解决不同层的问题,同层之间才存在替代关系。
存储Storage
GFS Google 论文
→
HDFS 开源实现
→
对象存储 S3 / OSS / MinIO
资源调度Scheduler
MR1 JobTracker
→
YARN
→
Kubernetes
批处理引擎Batch
MapReduce
→
Spark 内存 DAG
SQL 引擎Query
Hive on MR
→
Impala / Presto / SparkSQL
→
Trino / Doris / StarRocks
表格式Table Format
Hive Table 目录即分区
→
Hudi / Iceberg / Delta ACID·upsert·快照
流处理Streaming
Storm
→
Spark Streaming 微批
→
Flink 真流·状态·exactly-once
消息 / 日志Messaging
Kafka
→
Pulsar 存算分离
已淘汰 / 边缘化
当前主流
→ 表示"后者在同一能力上取代/超越前者"
二、时间轴:每个组件是什么、为什么出现
颜色对应上面的能力类别。每张卡片底部标注它替代了谁 / 被谁替代。
2003 – 2006
🧬 起源:Google 三篇论文
整个大数据栈的基因都来自 Google 内部系统的三篇论文。开源世界照着论文"抄"出了 Hadoop。
GFS 论文
2003
Google
把海量廉价机器的磁盘拼成一个大文件系统,数据分块 + 多副本容错。
催生 → HDFS
MapReduce 论文
2004
Google
用 map / reduce 两个算子把计算拆到成千上万台机器,自动处理容错与调度。
催生 → Hadoop MapReduce
Bigtable 论文
2006
Google
建在 GFS 上的分布式 NoSQL 宽表,支持随机读写海量结构化数据。
催生 → HBase
2006 – 2010
🐘 Hadoop 生态繁荣
Doug Cutting 从 Nutch 里拆出 Hadoop(HDFS + MapReduce)。随后一大批"让 MapReduce 更好用"的工具涌现——但底层都在跑 MR。
HDFS
2006
Hadoop 核心
GFS 的开源实现。奠定"存储层"基石,至今仍是私有化部署的主力。
后被 对象存储(S3/OSS) 在云上取代
MapReduce
2006
Hadoop 核心
第一代批处理引擎。每个 stage 落盘、job 间串行,慢但可靠。
后被 Spark 全面取代
Hive
2008
Facebook
把 SQL(HQL)编译成 MapReduce,让不懂 Java 的人也能查数。顺带发明了 HMS。
引擎角色后被 Presto/SparkSQL/Doris 取代;但它的 HMS 和表规范成了标准
Pig
2008
Yahoo
用脚本式数据流语言(Pig Latin)写 MR。曾是 Hive 的平行选择。
已基本淘汰,被 Spark / SQL 取代
HBase
2008
开源社区
Bigtable 的开源实现,HDFS 之上的 NoSQL 宽表,支撑随机读写场景。
与批处理正交,至今仍在用
ZooKeeper
2010
Yahoo
分布式协调服务(选主、配置、锁),是众多组件的"底座"。
部分场景被各组件内置共识(如 Kafka KRaft)替代
2011 – 2014
⚡ YARN 解耦 + Spark 革命
两件大事:YARN 把"资源调度"从 MapReduce 里剥离,让 Hadoop 能跑各种引擎;Spark 用内存计算把 MapReduce 打得溃不成军。
YARN
2012
Hadoop 2.0
把资源管理独立成一层。从此 Spark、Flink 等都能在 Hadoop 集群上跑,不再绑死 MR。
替代 MR1 JobTracker;后在云原生被 K8s 蚕食
Spark
2010→2014
UC Berkeley AMPLab
基于内存的 RDD/DAG 引擎,中间结果不落盘、多算子 pipeline,迭代作业快一个数量级。2014 成为 Apache 顶级项目。
取代 → MapReduce,成为批处理事实标准
Impala / Presto
2012–13
Cloudera / Facebook
MPP 架构的交互式 SQL 引擎,常驻进程 + 全内存 pipeline,秒级查询,不走 MR。
取代 → Hive on MR 的交互查询场景
Spark SQL
2014
Databricks
Spark 的 SQL 前端 + Catalyst 优化器 + DataFrame。早期前身 Shark 直接复用 Hive 解析器。
在 SQL 层蚕食 Hive,复用其 HMS
2011 – 2016
🌊 实时化:消息队列 + 流处理
业务开始要"实时"。Kafka 成了数据管道的中枢,流处理引擎从"微批"进化到"真流"。
Kafka
2011
LinkedIn
分布式提交日志 / 消息队列。成为整个实时数据管道的"中枢神经",解耦生产者与消费者。
当前主流;Pulsar 以存算分离作为挑战者
Storm
2011
Twitter
第一代真流处理,逐条处理低延迟,但语义弱(难保 exactly-once)。
被 Spark Streaming / Flink 取代
Spark Streaming
2013
Databricks
"微批"模拟流:把流切成小批次用 Spark 跑。吞吐高但延迟受批次限制。
真流场景后被 Flink 取代
Flink
2014→2016
源自 Stratosphere
真正的流优先引擎:事件时间、状态管理、精确一次(exactly-once)、水位线。
取代 → Storm/Spark Streaming,成流处理主流
2017 – 2020
🏞️ 湖仓时代:表格式登场
数据湖(HDFS/S3 一堆文件)缺事务、不能 upsert、schema 演进痛苦。三大"表格式"应运而生,把数据库的能力下沉到文件层。
Hudi
2017
Uber
主打 upsert + 增量拉取,擅长 CDC 入湖、近实时更新。COW / MOR 两种模式。
取代 → Hive Table 的静态分区模型
Iceberg
2017
Netflix
主打 开放规范 + schema/分区演进 + 快照,引擎中立,生态最广。
与 Hudi/Delta 竞争,当前势头最猛
Delta Lake
2019
Databricks
基于事务日志(_delta_log)提供 ACID,与 Spark 生态深度绑定。
Databricks 体系内的主力表格式
对象存储上位
~2018
S3 / OSS
云上按需付费、存算分离,逐步取代自建 HDFS 成为湖的底座。
取代 → HDFS(在云环境)
2020 – 至今
🚀 现代:实时 OLAP + Catalog 解耦
查询侧走向"实时数仓 + 湖仓一体";元数据侧,统治了十几年的 HMS 也开始被新一代 Catalog 挑战。
Doris / StarRocks
2020+
Apache / 社区
高性能 MPP OLAP,亚秒级查询。既能建内表,也能 Multi-Catalog 挂载 HMS 直查湖上 Hudi/Iceberg。
取代 → Presto/Impala 的实时分析场景
Trino
2019
PrestoSQL 改名
Presto 社区分叉版,联邦查询 + 湖仓查询主力,连接器生态极强。
继承并超越 Presto
Kubernetes
2020+
CNCF
云原生资源调度。Spark/Flink on K8s 逐步取代 YARN,统一在线/离线资源池。
正在替代 → YARN