Apache Flink S3 ListBucket API 调用

问题描述 投票:0回答:1

我们使用AWS S3来存储flink保存点。理想情况下,flink 将主要使用 GetObject 和 PutObject 操作,但在我们的例子中,ListBucket 是 flink 关联的 S3 存储桶最常调用的 API。想知道为什么 flink 使用 ListBucket API 以及有什么方法可以减少这些调用?

期望减少这些调用,从而减少与 S3 中这些调用相关的 AWS 成本。

amazon-web-services kubernetes amazon-s3 apache-flink savepoints
1个回答
0
投票

Flink 使用文件系统抽象作为其检查点和保存点。对于 S3,该接口有两种不同的实现,一种来自 Hadoop,另一种来自 Presto。

Hadoop S3 文件系统模仿 S3 之上的文件系统:

  • 在写入之前检查“父目录”是否存在
  • 它创建空标记文件来标记此类父目录的存在
  • 这些存在请求的成本很高,并且可能违反创建后读取的一致性。 (恢复操作可能会失败,因为状态文件看起来不存在(由于 S3 负载均衡器中的缓存)。最终该文件将可见,只有这样恢复才会成功。)

Presto S3 并没有试图发挥这种魔力; 它只是执行 PUT/GET 操作。这就是为什么 Presto S3 实现是推荐用于 S3 检查点的文件系统的原因。有关更多信息,请参阅 https://nightlies.apache.org/flink/flink-docs-stable/docs/deployment/filesystems/s3/#hadooppresto-s3-file-systems-plugins

© www.soinside.com 2019 - 2024. All rights reserved.