Skip to content

大数据处理技术全景

「数据是新的石油——但提炼石油需要整套工业体系。」


一、技术背景:数据爆炸时代的必然产物

1.1 大数据的定义:远超传统系统处理能力的数据集合

大数据处理技术的诞生,源于一个简单的现实:人类产生的数据量,已经远远超出了传统数据库和计算系统的处理能力。

"5V"定义

维度含义典型数据量
Volume(体量)数据规模从TB跃升至PB、EB级Facebook每天产生45TB数据,Google每秒处理PB级数据
Velocity(速度)数据生成和处理的时效性要求极高双十一每秒100万+订单,滴滴每秒10万+打车请求
Variety(多样)结构化、半结构化、非结构化数据并存日志/JSON/视频/语音/图片共存
Veracity(真实)数据质量和可信度参差不齐噪音、缺失值、重复数据、格式不统一
Value(价值)目标是从海量数据中提炼可行动的洞察最终商业价值的大小

1.2 全球数据量级一览:真实的数字震撼

「谈大数据不谈量级,就像谈财富不谈数字。」 认识大数据,先从理解真实世界的数据规模开始。

全球总量:从 ZB 到 YB 的狂飙

根据 IDC Global Datasphere 报告,全球数据量正以指数级增长:

年份全球数据总量标注
2010~2 ZB大数据概念萌芽期
2015~15 ZB移动互联网爆发
2020~64 ZB疫情加速数字化转型
2025~175 ZBAI训练数据需求激增
2029(预测)~394 ZB三年内再翻一倍

量级换算:1 KB = 10³ B → 1 MB = 10⁶ B → 1 GB = 10⁹ B → 1 TB = 10¹² B → 1 PB = 10¹⁵ B → 1 EB = 10¹⁸ B → 1 ZB = 10²¹ B → 1 YB = 10²⁴ B

1 ZB ≈ 存储 2500 亿部高清电影 ≈ 全球所有沙滩沙子总量的数据等价

科技巨头的每日数据量

公司每日新增数据量核心数据场景
Google~20 PB搜索索引、Gmail、YouTube视频处理、地图轨迹
Meta (Facebook)~4 PB社交动态、图片/视频、广告投放日志、VR内容
字节跳动~10 PB抖音/TikTok视频、推荐系统特征、用户行为日志
阿里巴巴~100 PB(含日志)电商交易、物流、支付、推荐、云计算
腾讯~10 PB微信消息、朋友圈、公众号、游戏数据、支付
Netflix~1 PB 新增 + 传输 PB 级视频流传输、用户观看行为、推荐系统
Amazon数十 PB商品数据、AWS日志、Alexa语音、物流轨迹
Apple数 PBiCloud照片/文件、App Store、健康数据

行业场景数据量级

行业/场景典型数据量级具体案例
电商大促TB~PB/天淘宝双11峰值 58.3万笔/秒(2024),单日产生日志数十TB
社交媒体PB 级/天微信日均消息 1000亿+ 条,抖音日均播放 1000亿+ 次
金融交易TB~PB/天全球外汇市场日均交易量 ~7.5万亿美元,国内银行年交易记录万亿条
自动驾驶TB/车/天一辆L4级自动驾驶车每天产生 ~4TB 传感器数据(激光雷达+摄像头+毫米波雷达)
视频监控PB 级/天一个中等城市10万个摄像头,每天产生数PB视频数据
电信运营商TB~PB/天中国移动日话单记录数十亿条,信令数据TB级
IoT/工业制造TB~PB/天大型工厂数千传感器,每秒百万级数据点;风力发电机组单台每天产生 ~10GB
基因组学100 GB/人一个人全基因组测序 ~200 GB,百万级人群基因组数据库达到 EB 级
医疗影像TB~PB/年一家中型三甲医院年产生医疗影像 ~1 PB
气象/地球科学PB 级欧洲中期天气预报中心(ECMWF)每天处理 PB 级气象观测数据
大模型训练TB~PBGPT-4训练数据集约 13TB 文本,Llama 3训练使用了 15T tokens
广告投放TB~PB/天头部广告平台日均处理 100亿+ 次竞价请求

数据量级与公司规模的对应关系

数据量级阶梯:

  个人开发者            →  GB 级     →  MySQL / SQLite
  初创公司              →  TB 级     →  MySQL 主从 + Redis
  中型互联网公司         →  数 TB~数十 TB →  MySQL分库分表 + ES + Redis 集群
  大型互联网公司         →  PB 级     →  Hadoop/Spark + ClickHouse + Kafka
  超大型平台             →  数十~数百 PB →  多集群 + 多引擎 + 湖仓一体
  科技巨头 / 全球平台   →  EB 级     →  自研引擎 + 全球多数据中心

  关键阈值:
  - 1 TB:传统数据库开始吃力
  - 10 TB:必须引入分布式方案
  - 1 PB:完整大数据平台成为刚需
  - 1 EB:需要自研或深度定制基础设施

1.3 传统数据库的瓶颈:为什么关系型数据库不够用了?

瓶颈维度具体表现大数据背景下的后果
垂直扩展瓶颈单机硬件升级成本呈指数增长,边际收益递减花1000万买顶配服务器,性能只能提升2倍
单点故障一台数据库挂了,整个系统不可用互联网业务分秒必争,一次宕机损失巨大
无法处理非结构化数据关系型数据库只能存结构化数据图片、视频、日志、语音无法高效存储和分析
成本失控企业级数据库License费用高昂PB级数据用Oracle,年License费用数千万

1.4 从数据仓库到大数据平台:技术范式的根本转变

维度传统数据仓库大数据平台
架构集中式架构,少数大型服务器分布式架构,数千台普通服务器
扩展方式垂直扩展(Scale Up)——换更强机器水平扩展(Scale Out)——加更多机器
数据模型高度结构化,Schema-on-Write(写入时定义结构)多模态,Schema-on-Read(读取时定义结构)
处理范式ETL批量处理,T+1延迟批流一体,秒级/毫秒级响应
成本高昂(Oracle/DB2等商业数据库)低廉(开源Hadoop集群+廉价服务器)

二、核心技术问题

2.1 数据存储:海量数据如何可靠存储

问题一:数据规模远超单机存储上限

一块企业级硬盘容量约16TB,而一个中型互联网公司的数据量往往达到PB级(1PB = 1024TB),需要数百块磁盘。如何让这些磁盘像一台机器一样工作?

解决方案:分布式文件系统(HDFS)

HDFS架构:

┌─────────────┐
│  NameNode   │  ← 元数据管理器(内存中)
│(名字节点)  │     存储文件分块位置
└──────┬──────┘

┌──────────────┼──────────────┐
▼              ▼              ▼
┌────────┐ ┌────────┐ ┌────────┐
│DataNode│ │DataNode│ │DataNode│
│(数据节点)│ │(数据节点)│ │(数据节点)│
└────────┘ └────────┘ └────────┘
   │            │            │
 存储Chunk1   存储Chunk2   存储Chunk3
  (128MB)      (128MB)      (128MB)

每个文件被切成128MB的块,分散存储在多台DataNode上
每个块默认3副本,分布在不同机架,保证容错

核心原理:文件被切成固定大小的块(默认128MB),分散存储在集群的不同节点上。NameNode负责管理"文件到块"的映射关系——就像图书馆的目录索引,告诉读者"《红楼梦》在第3排第5架第3格"。


问题二:如何在海量数据中快速定位和查询

当数据量达到PB级时,全表扫描变得不可接受。

解决方案:数据分区 + 列式存储 + 索引

行式存储 vs 列式存储:

行式存储(MySQL传统模式):
← 一个用户的所有字段连续存储
查询"所有城市的平均年龄":
→ 必须读取所有行的所有列
→ 大量无效I/O

列式存储(ClickHouse/Parquet):
← 一个字段的所有值连续存储
查询"所有城市的平均年龄":
→ 只需读取Age列
→ I/O减少99%

2.2 数据计算:如何并行处理海量数据

问题三:单机算力永远不够用

即使单台服务器性能再强,处理10TB数据也需要数小时。解决方案只有一个:把任务拆分到多台机器上并行计算

解决方案一:MapReduce——分布式计算的"鼻祖"

WordCount示例(统计单词出现次数):

输入:
Map阶段:
  输入分片1 → Map函数:("hello",1), ("world",1)
  输入分片2 → Map函数:("hello",1), ("hadoop",1)
  输入分片3 → Map函数:("world",1), ("mapreduce",1)

Shuffle阶段(洗牌):
  所有Map输出按Key分组:
    "hello"    → [1, 1]  ← 来自分片1和2
    "world"    → [1, 1]  ← 来自分片1和3
    "hadoop"   → [1]     ← 来自分片2
    "mapreduce"→ [1]     ← 来自分片3

Reduce阶段:
  "hello"    → sum([1, 1]) = 2
  "world"    → sum([1, 1]) = 2
  "hadoop"   → sum([1]) = 1
  "mapreduce"→ sum([1]) = 1

输出:hello 2, world 2, hadoop 1, mapreduce 1

MapReduce的核心思想:分而治之。把一个大任务拆成若干小任务,分别在多台机器上执行,最后汇总结果。

但MapReduce有两个致命弱点

弱点表现影响
磁盘I/O瓶颈每一步计算结果都要写磁盘,迭代计算要反复读写机器学习等迭代任务性能极差
计算模型单一只有Map和Reduce两个阶段复杂逻辑需要多个Job串联

解决方案二:Spark——内存计算颠覆MapReduce

Spark用**RDD(弹性分布式数据集)**替代了MapReduce的磁盘I/O:

MapReduce计算模式:
读取HDFS → Map → 写磁盘 → Reduce → 写磁盘 → Reduce → 输出
                      ↑                    ↑
              每次中间结果都要写磁盘    磁盘I/O成为瓶颈

Spark计算模式:
读取HDFS → Map → Reduce → 输出

        中间结果缓存在内存中
        下次迭代直接读内存,速度快100倍

机器学习训练100轮迭代:
MapReduce:每轮都要读写磁盘 → 总耗时:数小时
Spark:   中间结果放内存   → 总耗时:数分钟

Spark的核心优势

维度MapReduceSpark
计算速度慢(磁盘I/O为主)快10-100倍(内存计算)
计算模型单一(Map→Reduce)丰富(DAG、流水线、迭代)
编程接口Java,代码量大Scala/Python/SQL,简洁
生态整合独立统一(Batch+SQL+ML+Streaming)

解决方案三:Flink——真正的流处理引擎

Spark Streaming本质上是"微批处理"(把数据切成小批次,每批次几秒钟),而Flink是真正的流处理——每来一条数据就处理一条,延迟低至毫秒级。

微批处理(Spark Streaming):
数据流 → ... → 每1-5秒处理一批
延迟:1-5秒

流处理(Flink):
数据流 → ... → 每条数据立即处理
延迟:毫秒级

典型场景对比:
- 实时风控(判断一笔支付是否欺诈):需要毫秒级 → 必须用Flink
- 实时大屏(展示当前GMV):秒级足够 → Spark Streaming也可以

2.3 数据一致性:分布式环境下的事务保证

问题四:副本数据如何保持一致

分布式存储中,同一份数据会复制多份存放在不同节点上。问题来了:某个时刻,网络抖动导致节点间通信失败,数据怎么保证一致?

这就是CAP定理的体现

      C(一致性)
         /\
        /  \
       / CP \
      /      \
────/────────\──── AP
   │          │
    \        /
     \  AP  /
      \    /
       \  /
        \/
  A(可用性)

CP系统:牺牲可用性(分区时停止服务),保证强一致
代表:Zookeeper、HBase

AP系统:牺牲强一致性(允许短暂数据不一致),保证可用性
代表:Cassandra、Eureka

解决方案:从"非此即彼"到"弹性权衡"

CAP 定理告诉我们,在分布式系统中 C(一致性)和 A(可用性)不可兼得——但这不意味着只能二选一,而是在不同场景下做不同权衡:

策略核心思想代表技术典型场景
最终一致性允许短暂数据不一致,但保证最终收敛Cassandra、DynamoDB、Redis 集群社交点赞、商品浏览量
强一致性(CP)分区时宁可不可用,也要保证读到最新数据ZooKeeper、etcd(Raft 协议)配置中心、分布式锁、 leader 选举
因果一致性保证有因果关系的操作顺序正确,无因果关系的允许乱序CRDT(无冲突复制数据类型)协同编辑、聊天消息
读写分离 + 主从同步写主节点、读从节点,主从异步/半同步复制MySQL 主从、PostgreSQL 流复制大多数 OLTP 业务

工程实践中的关键手段

1. 分布式共识协议
   - Raft(etcd/Consul):Leader 选举 + 日志复制,易于理解实现
   - Paxos(Google Chubby):理论奠基,工程复杂度高
   - ZAB(ZooKeeper):简化版 Paxos,专为协调服务设计

2. 多版本并发控制(MVCC)
   - 每次写入产生新版本,读操作访问特定版本快照
   - 读写互不阻塞,是 "读写并发" 的核心机制
   - 代表:PostgreSQL MVCC、ClickHouse ReplacingMergeTree

3. 湖仓一体的 ACID 保障
   - Delta Lake / Iceberg / Hudi 通过 "乐观并发控制 + 写时冲突检测" 实现分布式 ACID
   - 支持 Time Travel(时间旅行):任意时刻的数据快照,便于回滚和审计

核心原则:没有"最好的"一致性方案,只有"最合适的"——根据业务场景(金融 vs 社交 vs 物联网)选择一致性级别。

2.4 数据质量:脏数据如何治理

问题五:数据不准,分析结果就是垃圾

数据质量问题场景后果
缺失值用户信息中10%的手机号为空短信触达率低
重复数据同一用户被记录了3次DAU重复计算
格式不统一日期有的写"2026-01-01",有的写"1/1/2026"聚合计算出错
异常值传感器温度突然显示999°C统计数据严重失真
数据漂移业务逻辑变更,但历史数据没有更新趋势分析错误

解决方案:数据质量治理体系——从"事后修补"到"全链路防控"

数据质量问题的治理不是单一工具能解决的,需要贯穿数据全生命周期的系统性方案:

治理层手段工具/技术解决的问题
事前预防Schema 注册与校验Schema Registry(Kafka)、Avro/Protobuf格式不统一、字段缺失
事前预防数据录入校验前端约束 + API 参数校验非法值、格式错误
事中清洗ETL 清洗规则Spark/Flink UDF、SQL CASE WHEN去重、标准化、异常值过滤
事中清洗数据脱敏与加密动态脱敏(Apache Ranger)敏感数据泄露
事后监控数据质量规则引擎Great Expectations、Apache Griffin自动检测缺失率、异常分布
事后监控数据血缘追踪Apache Atlas、DataHub问题溯源、影响范围评估
持续治理数据质量 SLA质量评分 + 告警 + 自动重跑持续保障数据可信度

典型数据质量规则示例

1. 完整性检查
   - 订单表 user_id 非空率 ≥ 99.9%
   - 支付表 order_id 关联成功率 ≥ 99.5%

2. 一致性检查
   - 日志表 UV 与 业务库 DAU 偏差 ≤ 5%
   - 每日新增订单数波动不超过前7天均值的 ±30%

3. 时效性检查
   - ODS 层数据延迟 ≤ 15 分钟
   - DWS 层产出时间 ≤ 每日 08:00

4. 唯一性检查
   - 订单号全局唯一,重复率 = 0
   - 用户 ID 与设备 ID 映射关系 1:1

核心原则:数据质量治理不是一次性的"大扫除",而是持续运营的"质量管理体系"——像工厂的质检流水线一样,每个环节都有标准和检测。

三、解决思路:分层架构的系统性应对

3.1 数据分层架构:ODS → DWD → DWS → DM

这是业界最经典的数据分层模型:

┌──────────────────────────────────────────────────────────┐
│              数据应用层(DM/ADS)                          │
│  业务报表、实时看板、数据产品、机器学习特征                  │
└──────────────────────────┬───────────────────────────────┘

┌──────────────────────────▼───────────────────────────────┐
│              数据服务层(DWS)                             │
│  按业务主题汇总的宽表(如用户宽表、商品宽表)               │
│  "每人每天买了多少次商品"                                  │
└──────────────────────────┬───────────────────────────────┘

┌──────────────────────────▼───────────────────────────────┐
│              数据明细层(DWD)                             │
│  清洗后的业务明细数据(如订单明细、用户行为明细)            │
│  "每笔订单的时间、商品、价格、用户ID"                      │
└──────────────────────────┬───────────────────────────────┘

┌──────────────────────────▼───────────────────────────────┐
│              数据源层(ODS)                               │
│  原始数据,未经清洗(Kafka原始日志、数据库原始同步)         │
│  "原始埋点日志、原始业务库数据"                            │
└──────────────────────────────────────────────────────────┘

分层的核心价值

  • 复用性:DWS层一份宽表,供多个应用使用,不用重复计算
  • 解耦性:ODS层数据可以随意重刷,不影响上层应用
  • 可追溯:数据出问题,一层层溯源定位问题

数据分层英文全称

缩写英文全称中文含义核心职责
ODSOperational Data Store操作数据存储层原始数据落地,保持与源系统一致,不做清洗
DWDData Warehouse Detail数据明细层(数据仓库明细)清洗、标准化、维度退化后的明细数据
DWSData Warehouse Summary数据汇总层(数据仓库汇总)按主题域聚合的宽表(用户宽表、商品宽表等)
DMData Mart数据集市层面向具体业务场景的应用数据(报表、指标、特征)

也常被称为 ADS(Application Data Service,应用数据服务层),DM 和 ADS 在不同公司叫法不同,本质相同。

3.2 批流一体架构:Lambda与Kappa的演进

Lambda架构:两套系统,各司其职

数据源

  ├──→ 实时层(Speed Layer):Flink流处理 → 实时视图(延迟低,数据可能不完整)

  └──→ 离线层(Batch Layer):Spark批处理 → 历史视图(延迟高,数据完整准确)

       └──→ 服务层(Serving Layer):合并实时+离线视图,输出给应用

优势:实时层提供低延迟视图,离线层提供准确的历史视图
劣势:两套系统维护成本高,数据合并逻辑复杂

Kappa架构:流批一体,极简至上

数据源

  └──→ 持久化日志(Kafka)

       └──→ 流处理引擎(Flink)处理所有数据

            ├── 实时计算:处理当前数据 → 输出实时视图
            └── 历史重放:把Kafka中的历史数据重新处理 → 输出历史视图

优势:只有一套系统,数据完全一致
挑战:流处理引擎需要支持大状态存储(30天窗口+历史重放)

当前主流架构选择:从 Lambda 到 Kappa 到"湖仓一体 + 批流融合"

时期主流架构代表企业特点
2015-2019Lambda 架构LinkedIn、Uber 早期离线(Spark)+ 实时(Flink/Storm)双通道并行,服务层合并
2019-2023Kappa 架构(纯流)Netflix、部分中小厂所有计算走 Flink 流处理,架构简洁但大状态管理有挑战
2023-至今批流融合 + 湖仓一体阿里、字节、Databricks主流选择,见下方详解

2025-2026 年业界主流架构

┌──────────────────────────────────────────────────────────────────┐
│                     批流融合 + 湖仓一体架构                        │
│                                                                    │
│  数据源                                                            │
│    │                                                               │
│    ├──→ Kafka(实时通道)                                           │
│    │      └──→ Flink ──→ 实时 ODS/DWD/DWS ──→ 实时应用             │
│    │                                          (毫秒~秒级)         │
│    │                                                               │
│    └──→ 数据湖存储(S3/OSS/HDFS)                                   │
│           │   格式:Iceberg / Hudi / Delta Lake                    │
│           │                                                        │
│           ├──→ Spark(离线通道)──→ 离线 DWD/DWS/DM ──→ 离线报表   │
│           │                                        (小时/天级)    │
│           │                                                        │
│           └──→ Presto/Trino(交互查询)──→ 即席分析                 │
│                                                 (秒级)            │
│                                                                    │
│  湖仓统一元数据层:统一 Schema、ACID 事务、Time Travel               │
│  数据质量层:Great Expectations / Apache Griffin                    │
└──────────────────────────────────────────────────────────────────┘

为什么"批流融合 + 湖仓一体"成为主流?

  1. Iceberg/Hudi/Delta Lake 成熟:在数据湖上提供了 ACID 事务、Schema 演化、Time Travel,不再需要单独建数据仓库
  2. Flink 批流统一:一套 API 同时写批和流,实时结果写入 Iceberg,离线也读同一张 Iceberg 表——数据天然一致
  3. 存储成本大幅下降:对象存储(S3/OSS)比 HDFS 便宜 5-10 倍,且免运维
  4. 交互查询普及:Presto/Trino 直接查询数据湖,无需导出到专用 OLAP 引擎

一句话总结:大多数公司不再纠结 Lambda 还是 Kappa,而是用 Iceberg/Hudi 做统一存储 + Flink 做实时 + Spark 做离线 + Presto 做交互查询,即"湖仓一体 + 批流融合"。

四、技术架构详解

4.1 完整大数据技术栈

┌──────────────────────────────────────────────────────────┐
│                      数据应用层                           │
│  BI报表(Tableau/PowerBI)│ 实时看板(Grafana)│ ML模型   │
└──────────────────────────┬───────────────────────────────┘

┌──────────────────────────▼───────────────────────────────┐
│                      计算引擎层                           │
│  Spark Batch │ Flink Stream │ Presto查询 │ ML训练(Horovod)│
└──────────────────────────┬───────────────────────────────┘

┌──────────────────────────▼───────────────────────────────┐
│                      存储引擎层                           │
│  HDFS │ Hive表 │ ClickHouse │ HBase │ Redis │ Kafka      │
└──────────────────────────┬───────────────────────────────┘

┌──────────────────────────▼───────────────────────────────┐
│                      数据集成层                           │
│  Flume日志采集 │ Kafka消息队列 │ Sqoop数据库同步 │ CDC变更捕获│
└──────────────────────────┬───────────────────────────────┘

┌──────────────────────────▼───────────────────────────────┐
│                      数据源层                             │
│  业务数据库(MySQL/PG)│ 用户行为日志│ IoT传感器│ 第三方API │
└──────────────────────────────────────────────────────────┘

4.2 三大典型场景技术架构

场景一:离线批处理架构(T+1)

适用:不需要实时结果的全量历史数据分析

数据流:
用户行为日志(Flume采集)

Kafka消息队列

Spark Streaming(初步清洗,写入HDFS)

ODS层(HDFS原始数据)

Spark(每日凌晨批量清洗)→ DWD层

Spark(HQL聚合)→ DWS层

Hive SQL生成报表 → Tableau展示

延迟:小时级/天级
代表:用户行为月报、商品销量统计、财务报表

场景二:实时流处理架构(毫秒级)

适用:需要秒级/毫秒级响应的实时决策场景

数据流:
用户下单(实时事件)

Kafka消息队列(缓冲+分区)

Flink(实时计算)
  ├── 实时指标:当前GMV、订单量、转化率
  ├── 实时特征:用户实时行为序列
  └── 实时告警:异常值检测(单笔金额超限)

Redis(实时数据缓存)

Grafana实时看板 / 业务系统API

延迟:毫秒~秒级
代表:实时风控、实时推荐、直播大屏、IoT监控

场景三:批流融合架构(企业主流)

适用:既需要实时数据也需要历史全量数据的综合场景

数据流(双通道并行):
Kafka → Flink → 实时DWD → 实时DWS → 实时DM → 实时应用
ODS   → Spark → 离线DWD → 离线DWS → 离线DM → 离线报表

实时DM + 离线DM → 应用层(自动合并)

示例:
  实时看板:实时GMV(来自Flink)+ 历史累计GMV(来自Spark)
  实时推荐:实时用户行为(来自Flink)+ 用户历史画像(来自Spark)

代表架构:电商平台、在线教育、金融交易系统

4.3 核心技术组件详解

Apache Kafka:消息队列的"高速公路"

Kafka是大数据生态的"中枢神经",解决了数据采集的可靠性和削峰填谷问题:

Kafka核心概念:

Producer(生产者):产生数据的一方
→ 电商系统产生订单消息

Topic(主题):数据的分类管道
→ "order-topic"存放所有订单数据
→ Topic可以设置多个Partition(分区),实现并行处理

Consumer(消费者):使用数据的一方
→ 库存服务订阅order-topic,消费订单消息扣库存
→ 推荐服务订阅order-topic,消费订单消息更新推荐模型

Broker(代理):Kafka的服务器节点
→ 多个Broker组成Kafka集群,数据分散存储
→ 每个Partition在多个Broker上有副本,保证高可用

核心能力:
- 高吞吐:每秒百万级消息(远超传统消息队列)
- 持久化:数据写入磁盘,保留7天(可配置)
- 可重放:消费者可以指定从某个offset开始消费(重放历史数据)
- 分区并行:Partition数量决定并行消费的上限

ClickHouse:OLAP分析的"火箭引擎"

ClickHouse是俄罗斯搜索引擎Yandex开源的列式OLAP数据库,专为分析场景而生:

传统MySQL查询 vs ClickHouse查询:

查询:统计过去30天每天的订单量

MySQL:
  耗时:30秒(扫描全表1亿行)

ClickHouse:
  耗时:0.3秒(列式存储+向量化执行,只读取需要的列)

ClickHouse的核心技术:

列式存储:
  只读取"日期"和"订单ID"两列,I/O减少99%

向量化执行(Vectorized Execution):
  CPU一次处理一批数据(SIMD指令),而非一行一行处理
  性能提升5-10倍

MergeTree表引擎:
  数据按日期分区,按主键排序存储
  支持分区裁剪(只扫描相关分区)
  支持稀疏索引(快速跳过无关数据块)

物化视图:
  预计算复杂的聚合结果,查询时直接读取
  查询性能再提升10倍

五、最新进展(2025—2026年)

5.1 湖仓一体(Data Lakehouse):打破数据湖与数据仓库的边界

传统数据架构的困境

数据湖数据仓库
存储原始数据,灵活但无ACID事务有ACID事务,但只支持结构化数据
只能事后分析,不能直接更新删除高性能,但成本高
数据孤岛,质量难以保证数据质量好,但灵活性差

Data Lakehouse = 数据湖的灵活性 + 数据仓库的规范性

湖仓一体架构(Delta Lake / Apache Iceberg / Apache Hudi):

┌─────────────────────────────────────────────────────────┐
│               Lakehouse(元数据层)                       │
│                                                          │
│  ┌─────────────────────────────────────────────────┐    │
│  │  ACID事务保证 → 读写并发,无数据丢失              │    │
│  │  Schema Evolution → 表结构变更,无需重建数据       │    │
│  │  Time Travel → 任意时刻数据快照,随时回滚         │    │
│  │  Iceberg/Hudi格式 → 开放标准,跨引擎兼容          │    │
│  └─────────────────────────────────────────────────┘    │
│                                                          │
│  ┌────────────────┐          ┌────────────────┐         │
│  │ 数据湖存储层   │          │ 数据仓库能力   │         │
│  │(S3/HDFS/OSS)│  ←融合→  │(ACID+SQL)   │         │
│  │ 原始文件开放   │          │ 高性能查询     │         │
│  └────────────────┘          └────────────────┘         │
│         ↑                              ↑                │
│    Spark读取  Flink写入  Presto查询                      │
│                                                          │
└─────────────────────────────────────────────────────────┘

5.2 Serverless大数据:按需付费的时代

传统大数据集群需要提前购买服务器,资源利用率通常只有15-30%,大量算力被浪费。

Serverless大数据架构

传统模式Serverless模式
提前购买集群(如100台服务器)按实际计算量付费
闲置时依然收费有任务才启动,用完即释放
资源固定自动弹性伸缩
运维成本高零运维

代表产品

  • AWS EMR Serverless
  • 阿里云MaxCompute
  • Google BigQuery(原生Serverless)

5.3 AI与大数据深度融合

大数据处理正从"ETL→分析→报表"的线性流程,转向"数据+AI一体化":

融合方向具体应用技术支撑
DataFrame拥抱AISpark DataFrame直接调用ML模型做推理SparkML + Python UDF
向量化数据库把Embedding向量存入数据库,支持相似度搜索Milvus、Pinecone
Lakehouse+LLM大模型直接读取数据湖做分析(Text-to-SQL)Databricks + LLM
数据质量AI检测用机器学习自动发现数据异常和质量问题Great Expectations + ML

5.4 流批统一引擎的成熟

Flink在2025年后成为批流统一的领导者:

Flink 2.0的核心突破:

批处理能力大幅提升:
- 支持更大的批处理窗口(从天到月)
- 优化了批处理状态的Checkpoints
- 吞吐量比Spark Batch快3-5倍

统一API成为现实:
- 一套DataStream API,同时支持流和批
- 同一套SQL,既能查实时流,也能查历史表
- 开发者只需学一套框架

状态管理革命:
- RocksDB状态后端 + 增量Checkpoint
- 10TB状态,Checkpoint恢复时间<30秒

5.5 边缘大数据与实时决策

工业IoT场景的大数据架构演进:

传统模式:
传感器数据 → 上传到云端 → 分析 → 返回结果
问题:网络延迟高(200-500ms),不适合实时控制

边缘计算模式:
传感器数据 → 边缘节点(实时处理)→ 就地决策(<10ms响应)
              → 同时上报云端(异步)→ 全局分析

边缘节点:NVIDIA Jetson / ARM集群,运行轻量级Flink
云端:处理全局数据,训练模型,推送模型到边缘

六、精华总结

大数据技术的演进规律

第一阶段(2000-2010):存储为王
  核心问题:数据存不下 → HDFS横空出世

第二阶段(2010-2015):计算为王
  核心问题:数据算不动 → MapReduce/Spark解决计算问题

第三阶段(2015-2020):效率为王
  核心问题:数据太慢 → 实时流处理(Flink)、内存计算成熟

第四阶段(2020-2025):融合为王
  核心问题:系统太多 → 批流一体、湖仓一体、多引擎融合

第五阶段(2025+):智能为王
  核心问题:数据太多人看不过来 → AI自动分析、大模型理解数据

技术选型决策树

第一步:确定实时性要求

├── 毫秒级(实时风控、控制指令)
│   → Flink + Kafka + Redis

├── 秒~分钟级(实时看板、大屏)
│   → Flink/Spark Streaming + ClickHouse

└── 小时/天级(离线报表、历史分析)
    → Spark + Hive + Presto

第二步:确定数据规模

├── GB级(中小公司)
│   → MySQL + Spark单机版 + Grafana

├── TB级(中型公司)
│   → Hadoop集群 + Hive + ClickHouse

└── PB级+(大型互联网公司)
    → 完整大数据平台(多集群+多引擎)

参考资料

Move fast and break things