开源数据湖方案对比
数据湖定义
数据湖是一类存储数据自然/原始格式的系统或存储,通常是对象块或者文件。数据湖通常是企业中全量数据的单一存储。全量数据包括原始系统所产生的原始数据拷贝以及为了各类任务而产生的转换数据,各类任务包括报表、可视化、高级分析和机器学习。数据湖中包括来自于关系型数据库中的结构化数据(行和列)、半结构化数据(如CSV、日志、XML、JSON)、非结构化数据(如email、文档、PDF等)和二进制数据(如图像、音频、视频)。
数据湖是个架构概念,一种架构设计的理念,不是一种特定的实施方法,更不是一款特定产品。
数据沼泽是一种退化的、缺乏管理的数据湖,数据沼泽对于用户来说要么是不可访问的、要么就是无法提供足够的价值。
与数据仓库的对比
特性 | 数据仓库(WareHouse) | 数据湖(Data Lake) | 湖仓一体?(Lake House) |
---|---|---|---|
数据 | 来自事务系统、运营数据库和业务线应用程序的关系数据 | 来自 IoT 设备、网站、移动应用程序、社交媒体和企业应用程序的非关系和关系数据 | |
Schema | 设计在数据仓库实施之前(写入型 Schema) | 写入在分析时(读取型 Schema) | |
性价比 | 更快查询结果会带来较高存储成本 | 更快查询结果只需较低存储成本 | |
数据质量 | 可作为重要事实依据的高度监管数据 | 任何可以或无法进行监管的数据(例如原始数据,可避免信息丢失) | |
关注点 | 充分设计的数据模型 | 对原始数据的高效、灵活处理 | |
用户 | 业务分析师 | 数据科学家、数据开发人员和业务分析师(使用监管数据) | |
分析 | 批处理报告、BI 和可视化 | 机器学习、预测分析、数据发现和分析 |
三大数据湖对比
特性 | Delta Lake | Apache Hudi | Apache Iceberg |
---|---|---|---|
商业公司 | 有 | 有 | 有 |
商业产品 | 有 | 暂无 | 暂无 |
ACID 事务 | 支持 | 支持 | 支持 |
时间旅行 | 支持 | 支持 | 支持 |
存储格式 | Parquet | Parquet、ORC | Parquet、ORC |
对象存储 | 支持 | 支持 | 支持 |
计算引擎 | Spark、Flink | Spark、Flink | Spark、Flink、Hive、Trino、Presto、Dremio |
Schema 存储 | 自维护、可同步到 Hive | 自维护、可同步到 Hive | 自维护、或 Hive |
Schema 验证+演化 | 支持 | 支持 | 支持 |
Merge 策略 | Copy On Write | Copy On Write Merge On Read |
Copy On Write Merge On Read |
文件加密 | 不支持 | 支持 | 支持 |
GitHub Star * | 4.1k | 2.8k | 2.5k |
Github Issue * | 136 | 74 | 673 |
* Github 数据统计截止 2022-02-23
两种 Merge 策略对比
权衡 | Copy On Write | Merge On Read |
---|---|---|
数据延迟 | 高 | 低 |
查询延迟 | 低 | 高 |
Update(I/O) 更新成本 | 高(重写整个Parquet文件) | 低(追加到增量日志) |
Parquet File Size | 低(更新成本I/O高) | 较大(低更新成本) |
Write Amplification(WA写入放大) | 大 | 低(取决于压缩策略) |