实时湖仓生态选型
在介绍实时湖仓生态选型之前,先看看流计算 + 湖存储的历史和发展。
· Storm : 流计算 += 不准确的实时预处理
· Spark : 流计算 += Mini-Batch 预处理
· Flink + HBase/Redis/Mysql : 流计算 += 准确的实时预处理
· Flink + OLAP : 流计算 += 实时数仓,预处理和成本的权衡,高性能 OLAP 带来了一定的灵活度
· Flink + 数据湖 : 流计算 += 离线数仓部分实时化
· Flink + 流式数据湖 : 流计算 += CDC 流式增量计算,解决更多痛点
· 未来 : Streaming Lakehouse,通用的 Lakehouse 架构
计算
● Spark(Structured Streaming)、Flink
Spark 流计算国外用的比较多,Spark RDD/Dataset 相关 API;Flink 流计算国内生态社区比较完善,绝大部分需求可以直接使用 SQL 完成。
●Trino、Doris、StarRocks
· Trino
1)优点:纯 Java 项目;代码质量较好;Hive 优化细节处理比较完善
2)缺点:执行性能比向量化引擎低;联邦查询较慢(缺少自己的元数据管理)
· Doris/StarRocks
1)优点:向量化引擎执行效率高;国内社区活跃;功能迭代快
2)缺点:C++ 门槛较高,遇到问题难排查
存储
根据计算选择存储,有如下推荐:
● Flink + Paimon/Iceberg
Paimon 早期是 Flink 内部存储,叫作 Table Store,后来进入Apache 孵化,改名为 Paimon。
● Spark + Hudi
Hudi 是从 Spark 解耦出来的,很多功能是和 Spark 绑定的,Spark 支持的最好,有很多存储过程
● Doris/StarRocks 自带的存储
元数据
● Hive MetaStore
· 传统数仓,用户非常多
· 存储有局限性:不同计算引擎的逻辑类型和 Hive 不一致,例如 timestamp 类型属性只能以 key value 的形式存储到 Hive 表的 Properties 里面
· Hive metastore 瓶颈:高并发请求元数据时,经常 CPU 打满
● Hudi MetaServer
Hudi 里面开发了一个可以存储 Hudi 元数据的服务,服务主要基于 Thrift 协议去开发,通过 MyBatis 保存元数据到 MySQL 中。
● HDFS/OSS
元数据存储在 HDFS 或者在对象存储上面:.hoodie / .iceberg(metadata) / .paimon(metadata)
● 二次开发
基于 Spring 生态去开发 Web 服务,元数据存储在 MySQL 中。
湖仓治理
EasyLake
袋鼠云 EasyLake 湖表治理功能支持数据文件治理,支持快照文件治理,支持 Hudi MOR 增量文件合并,将小文件数量控制在一定的范围内,提升治理效率。
Amoro
Amoro 为用户、平台和产品构建湖原生数据仓库和架构。
Dremio
基于 Apache Parquet、Apache Iceberg 和 Apache Arrow 等社区驱动标准的开放数据湖仓一体,使组织能够使用一流的处理引擎并消除供应商锁定。
本文根据《实时湖仓实践五讲第四期》直播内容总结而来,感兴趣的朋友们可点击链接观看直播回放视频及免费获取直播课件。
直播课件(点击文末阅读原文可直接跳转):
https://www.dtstack.com/resources/1055?src=bbs
《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu
《数栈V6.0产品白皮书》下载地址:https://fs80.cn/cw0iw1
想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs
同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack