大家好,前几天发布了一篇关于《Apache Paimon毕业,湖仓架构的未来发展趋势!》的文章,大致介绍了Apache Paimon正式成为Apache社区顶级项目后的一些趋势判断和分析。
如果你想整体了解Apache Paimon这个框架,可以参考《Apache Paimon核心原理和Flink应用进阶》,这篇文章系统性的介绍了Paimon这个框架的概念、原理以及常见优化手段。这个框架还在持续高速迭代,大家可以保持关注。
5月10日,Apache Paimon 0.8版本发布,我们照例解读一下这个版本的核心功能。
Apache Paimon 0.8.0 版本中的核心改动有:
1. 新增 Deletion Vectors,近实时更新与极速查询
2. 调整 Bucket 默认值为 -1,提升新学者的易用性
3. 新增通用文件索引机制,提升 OLAP 查询性能
4. 优化读写流程的内存及性能,减少 IO 访问次数
5. Changelog 文件单独管理机制以延长其生命周期
6. 新增基于文件系统的权限系统,管理读写权限
读写性能上的提升
读优化一
Paimon 0.8版本中提供了Deletion Vectors('deletion-vectors.enabled'='true')模式可以让主键表读性能大幅提升,达到近实时更新与极速查询的效果。
简单的说,Paimon借鉴了向量化计算中的Select Vectors结构,在写入时产出这样一个类似的Vectors,代表文件里面哪些数据被删掉了。这样在读取时直接过滤掉不需要的行,就相当于完成了文件合并,也不会影响读的性能。
大家熟悉Hudi的应该不陌生,我们在读取Hudi表中的数据时候也有参数控制,可以通过减少数据文件的合并加速查询。所以你看,优秀的框架的想法都是类似的。
读优化二
Paimon0.8版本新增了通用文件索引机制,在这个机制下Paimon会单独维护索引文件。当然这个功能目前还没有很完美,后续会持续优化。
我们在这里重点说一下Paimon在OLAP查询性能上,未来在部分场景平替类似Doris/Clickhouse等。在很多场景下我们需要把数据灌入Doris/Clickhouse进行看板/报表等查询,其实在小部分场景,大家对查询速度要求并不高,假设湖表的查询性能能提升到一定程度,那么在这种场景下,我们就可以省去Kafka2OLAP这条链路。
其他读写优化
这部分转载自Paimon和Flink官方社区:
Write 性能优化
优化了写入时的序列化性能,对于整体写有着 10-20% 的性能提升 大幅提升了 Append table 多分区写入 (超过5个分区) 的性能问题 加大了 'num-sorted-run.stop-trigger' 的默认值,它会减缓反压 优化了动态 bucket 写入的启动性能
Commit 性能优化
大幅降低 Commit 节点的内存占用 去除了 Commit 里面无用的检查,write-only 的提交会快很多 Partition Expire 的性能得到大幅提升
查询性能优化
大幅降低生成 Plan 时的内存占用 降低了 plan 以及 read 阶段对文件系统 namenode 的访问,这也有利于对象存储的 OLAP 性能 codegen 支持了 cache,这将有效提升短查询的性能 通过序列化 Table 对象,Hive 查询大幅降低了访问文件系统 namenode 的频率 大幅提升了 first_row merge-engine 的查询性能
Record级别 TTL 配置
record级别的TTL配置在很多湖表中支持的并不好,大多数都是基于分区进行删除的。这就导致一个问题,我们在生产环境必须使用分区表。
但是,事实上并不是所有场景都需要分区,我们期望湖表能够拥有类似Hbase一样的单条数据的TTL配置。
现在我们就可以通过简单的配置record-level.expire-time来进行TTL管理了。
和Flink/Spark的集成优化
我们重点看下面这两点即可:
Lookup Join优化
1. Flink Lookup Join 在此版本中使用 Hash Lookup 来获取数据,这可以避免 RocksDB 的数据插入带来的开销;
2. Flink Lookup Join引入了max_pt模式,关联最新的分区数据
目前的维度表关联功能整体上看,还没有完全看齐其他存储类型的维度表的能力。
Spark 查询优化
大家直接看官方给的:
Spark 使用 COW 技术支持了 Append 表的 DELETE 与 UPDATE,Spark DELETE 也支持了所有MergeEngines 的主键表。Spark DELETE 和 UPDATE 也支持 subquery 的条件。Spark COMPACT Procedure 支持了 where 的方式。
最后
整个湖仓领域大家可以持续关注,未来我会持续给大家带来生产环境的最佳实践和未来发展趋势的解读。