对象存储 TOS 因其高可用、高可靠、无限容量及低成本的特点,已成为流式计算 Flink 版在存算分离架构下首选的数据存储底座。然而,在 Flink 任务(尤其是使用 Paimon、Iceberg 等数据湖格式)与 TOS 进行高频交互时,传统的访问方式可能会遇到性能瓶颈和原子性操作支持不足的问题。
为最大化发挥 Flink on TOS 的架构优势,提升作业稳定性和数据处理效率,本文档提供两项关键的性能优化建议:启用 TOS 分层命名空间(HNS)桶 和 开启 Flink TOS Filesystem Plugin 的 Proton 加速功能。
优化说明:
TOS 分层命名空间 HNS(Hierarchical NameSpace)是一种全新的桶类型。它在保留对象存储无限扩展能力的同时,引入了类似文件系统的目录树状元数据结构,解决了传统扁平命名空间 FNS(Flat NameSpace)桶在大数据场景下的关键痛点。
核心优势与适用场景:
Rename 和 Move 操作,这些操作在底层是原子性的。Rename 临时文件到正式目录来完成 Checkpoint 提交。HNS 桶使此操作变得瞬时且原子,极大缩短了 Checkpoint 最终化时间,提升了作业稳定性和吞吐量。Rename 一个元数据文件来完成一次事务提交。HNS 桶能确保提交的原子性和高性能,避免因提交缓慢或失败导致的数据不一致或作业延迟。List 和 Head 操作在 HNS 桶中性能极佳,因为其元数据按目录结构组织。List 操作可以降低源节点的扫描延迟,更快地发现新数据,减少端到端的数据处理延迟。优化说明:flink.plugins.filesystem.tos.proton.enabled: true 参数用于启用由 E-MapReduce (EMR) 团队打造的 Proton 加速引擎。该引擎针对 TOS 的访问模式进行了深度优化,是提升 Flink 读写 TOS 性能的首选方案。
核心优势:
JobCommitter。它与 HNS 桶结合,能实现最快、最可靠的文件提交,彻底解决 Rename 性能瓶颈,确保 Exactly-Once 语义。此优化需要在创建 TOS 存储桶时进行配置,现有 FNS 桶无法直接升级为 HNS 桶。
tos://your-hns-bucket/path/to/checkpoint)。注意: HNS 创建前请参阅 官方文档 确认是否符合您的需求。
此优化通过 Flink 作业参数进行配置,非常简单。
flink.plugins.filesystem.tos.proton.enabled: true
tos:// 路径的读写都将通过高性能的 Proton 客户端进行。