大数据开源项目大盘点
概述
大数据生态开源项目繁多,本文按存储、计算、表格式、OLAP、消息、调度、治理分类盘点核心项目,给出定位、核心能力与选型要点,帮你建立全局认知。
一、存储层
1.1 HDFS
定位:分布式文件系统
核心:NameNode/DataNode、副本、HA
场景:海量数据底座(存算一体)
现状:逐渐被对象存储替代,存量巨大1.2 对象存储
定位:云原生存储
S3/OSS/GCS
特点:无限容量、廉价、存算分离
场景:湖仓存储底座1.3 其他存储
| 项目 | 定位 |
|---|---|
| HBase | 分布式 KV/宽表 |
| ZooKeeper | 分布式协调 |
| Redis | 缓存/在线特征 |
| Kafka | 消息/日志 |
二、计算引擎
2.1 批处理
| 引擎 | 特点 | 场景 |
|---|---|---|
| MapReduce | 经典但慢 | 存量迁移 |
| Spark | 内存计算、生态全 | 离线主力 |
| Tez | DAG 优化 | Hive 加速 |
Spark 核心:
RDD/DataFrame
Catalyst 优化
AQE 自适应
生态:SQL/流/ML/图2.2 流处理
| 引擎 | 特点 | 场景 |
|---|---|---|
| Flink | 低延迟、状态强、精确一次 | 实时主力 |
| Spark Streaming | 微批、生态复用 | 批流一体 |
| Kafka Streams | 嵌入式轻量 | Kafka 生态 |
Flink 核心:
事件时间/水位线
状态与 Checkpoint
窗口/CEP/CDC
流批一体2.3 查询引擎
| 引擎 | 特点 |
|---|---|
| Presto/Trino | 跨源即席查询 |
| Impala | MPP 低延迟 |
| 存算分离查询 | 云上数据湖查询 |
三、表格式(湖仓基础)
| 项目 | 特点 | 生态 |
|---|---|---|
| Iceberg | 快照隔离、时间旅行、通用 | 多引擎 |
| Delta Lake | 事务日志、Spark 强 | Spark |
| Hudi | 增量、Copy-on-Write/Merge-on-Read | 增量场景 |
共同能力:
ACID
Schema 演化
分区演进
时间旅行
增量读取选型:
多引擎通用 → Iceberg
Spark 生态 → Delta
增量/近实时 → Hudi四、OLAP 引擎
4.1 分类
| 类型 | 项目 |
|---|---|
| 列式分析 | ClickHouse、Doris、StarRocks |
| 预计算 | Kylin |
| 时序 | Druid |
| 查询层 | Presto/Trino |
4.2 核心对比
| 引擎 | 特点 | 场景 |
|---|---|---|
| ClickHouse | 极速单表聚合 | 日志/监控大屏 |
| Doris | MPP、易用、运维简单 | 报表/Ad-hoc |
| StarRocks | CBO、高并发 | 实时分析 |
| Kylin | Cube 预计算 | 固定报表 |
| Druid | 时序摄入 | 时序分析 |
选型思路:
实时报表 → Doris/StarRocks
极速聚合/日志 → ClickHouse
固定多维分析 → Kylin
时序 → Druid五、消息平台
| 项目 | 特点 | 场景 |
|---|---|---|
| Kafka | 高吞吐、生态强 | 数据管道 |
| Pulsar | 存算分离、多租户 | 云原生 |
| RocketMQ | 事务/延迟消息 | 业务解耦 |
| RabbitMQ | 灵活路由 | 应用集成 |
选型:
大数据管道 → Kafka
云原生多租户 → Pulsar
金融事务 → RocketMQ六、调度与工作流
| 项目 | 特点 |
|---|---|
| Airflow | Python DAG、生态大 |
| DolphinScheduler | 可视化、中文社区 |
| Azkaban | 轻量、LinkedIn |
| Oozie | 老牌 Hadoop |
选型:
技术团队 → Airflow
可视化易用 → DolphinScheduler七、数据治理
| 项目 | 定位 |
|---|---|
| Atlas | 元数据/血缘/分类 |
| DataHub | 现代元数据平台 |
| Amundsen | 数据发现 |
| Ranger | 权限管理 |
| Great Expectations | 数据质量 |
选型:
血缘/分类 → Atlas
现代目录/发现 → DataHub
质量 → Great Expectations/Deequ八、机器学习
| 项目 | 定位 |
|---|---|
| Spark MLlib | 分布式 ML |
| MLflow | 实验追踪/模型管理 |
| TensorFlow/PyTorch | 深度学习 |
| XGBoost/LightGBM | 表格强模型 |
九、生态全景图
大数据生态全景:
采集:Canal、DataX、SeaTunnel、Flume
消息:Kafka、Pulsar、RocketMQ
存储:HDFS、对象存储、HBase
计算:Spark、Flink、Presto
表格式:Iceberg、Delta、Hudi
OLAP:CH、Doris、StarRocks、Kylin
调度:Airflow、DolphinScheduler
治理:Atlas、DataHub、Ranger
ML:MLlib、MLflow、PyTorch
云原生:K8s、对象存储、存算分离选型组合推荐:
离线:Kafka → Spark → Iceberg → Doris
实时:CDC → Kafka → Flink → Doris
湖仓:对象存储 + Iceberg + Flink/Spark
治理:Atlas/DataHub + Ranger + GX十、选型原则
10.1 选型考量
| 维度 | 说明 |
|---|---|
| 场景 | 明确需求 |
| 生态 | 与现有栈契合 |
| 社区 | 活跃度/坑多不多 |
| 运维 | 团队能力 |
| 演进 | 是否主流方向 |
10.2 常见误区
| 误区 | 说明 |
|---|---|
| 追逐新项目 | 稳定成熟优先 |
| 一套通吃 | 各司其职混用 |
| 忽略运维 | 评估人力成本 |
| 忽略生态 | 考虑集成成本 |
十一、小结
大数据生态没有"全能选手",而是各司其职的组件组合:存储用对象存储/HDFS,计算用 Spark/Flink,湖仓用表格式,分析用 OLAP,管道用 Kafka,治理用元数据平台。选型先明确场景,再评估生态与运维,最后落到"最佳组合"而非"最强单品"。