Paimon在各大公司生产实践和优化总结

这是一篇汇总和个人学习文章,主要目的是总结一下Paimon在各大公司的落地做一个学习笔记。

本文的主要内容是关于Paimon在各大公司包括Vivo、Shopee、阿里、抖音等公司的落地实践,文末有文章来源地址,内容大概分为几个部分:

  1. 引入Paimon的背景和主要解决的问题

  2. 解决方案细节和基本架构

  3. 核心优化点

引入Paimon的背景和主要解决的问题

离线时效性问题

从各家公司分享的内部应用来看,大多数场景都是Lambda架构同时存在。离线批处理架构最大的问题是存储和时效,存储上Hive本身能力有限,大部分场景是insert overwrite,并且基本不关心文件组织形式。

Paimon为代表的湖框架可以精细管理每一个文件,除了简单的insert overwrite,具备比较强大的ACID能力,能够流式写入实现分钟级更新。

实时链路问题

以Flink+MQ为主的实时链路,主要的问题包括:

  • 成本较高,Flink周边技术栈众多,管理和运维成本高;并且因为中间结果不落地,需要大量的dump任务辅助进行问题定位和数据修复;

  • 任务稳定性,有状态的计算导致延迟等各种问题;

  • 中间结果不落地,需要大量的辅助任务协助排查问题。

所以我们可以定性的给Paimon解决的问题下一个结论:统一流批链路,提升时效的同时降低成本。

核心场景和解决方案

数据统一入湖

在各大公司的分享中,都提到了关于使用Paimon代替传统的Hive ODS层,将Paimon作为整个业务数据库的统一镜像表,提高数据链路的时效性并优化存储空间。

实际生产链路带来的好处如下:

  • 在传统离线和实时链路中,ODS分别由Hive表和MQ(一般是Kafka)来承载,在新链路中Paimon表作为ODS的统一存储,既满足流读又满足批读;

  • 采用Paimon后,由于整个链路是准实时的,可以将处理时间从小时级缩短到分钟级,通常控制在十分钟以内;

  • Paimon对并发写操作有很好的支持,并且Paimon同时支持主键表和非主键表;

这里值得一提的是,Shopee开发了基于Paimon Branch的「日切功能」。简单的说即按照天进行数据切分,避免全量分区的数据冗余存储问题。

此外,Paimon社区也提供了一套工具,可以帮助大家进行schema evolution,将MySQL甚至Kafka的数据同步到Paimon中,上游增加列,Paimon表也会跟着增加列。

维度表 Lookup Join

Paimon主键表作为维度表场景,在各大公司都有成熟应用,实际生产环境经过很多次考验。

Paimon作为维度表的场景分为两类,一类是实时维度表:通过Flink任务接业务数据库实时更新;另一类是离线维度表,也就是通过Spark离线任务T+1更新,也是维度表的绝大数据场景。

Paimon维度表同样可以支持Flink Streamin SQL任务和Flink Batch任务。

我们在之前的文章Paimon生产环境问题小总结也提到过维度表优化的场景。

Paimon宽表场景

Paimon和其他的很多框架一样,支持Partial Update,LSM Tree架构使得Paimon有很高的点查与合并性能,但是这里要特别注意几个点:

  • 性能瓶颈,在超大规模数据更新或者超多列更新场景,后台合并性能会有明显的下降,需要谨慎测试后使用;

  • Sequence Group排序,当业务有多个流进行拼接时,会给每个流定义一个单独的 Sequence Group,对每个Sequence Group排序字段需要合理选择,甚至会有多个字段排序情况;

PV/UV场景

在蚂蚁计算 PV/UV 指标的例子中,之前是使用 Flink 的全状态链路来实现的,但后来发现大量业务难以迁移到这种模式,因此将其替换为 Paimon。

利用 Paimon 的 upsert(更新或插入)更新机制来进行去重,并且利用 Paimon 的轻量级日志 changlog 来消费数据,为下游提供实时的 PV(Page View,页面浏览量)和 UV 计算。

在整体资源消耗方面,Paimon方案使得整体CPU使用率下降了60%,同时checkpoint的稳定性也得到了显著提升。此外,由于Paimon支持point-to-point(端到端)写入,任务的回滚和重置时间也大幅减少。整体架构因为变得更加简单,因此在业务研发成本上也实现了降低。

湖上OLAP

因为Spark和Paimon集成度很高,通过Spark或Flink进行一些ETL操作,将数据写入Paimon中,基于Paimon进行z-order排序、聚簇,甚至构建文件级索引,然后通过Doris或StarRocks进行OLAP查询,这样就可以达到全链路OLAP的效果。

总结

基本上面内容就是各大公司落地的主要场景,当然还有一些其他场景我们后续再持续补充。

参考文档:

  • 基于 Paimon 的数据湖技术在 Shopee 的应用

  • vivo基于Paimon的湖仓一体落地实践

  • Apache Paimon 实时湖仓存储底座

  • Flink x Paimon 在抖音集团生活服务的落地实践

你可能感兴趣的:(Paimon在各大公司生产实践和优化总结)