Apache Flink GCS FileSink 由于许多小文件而性能不佳

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

我正在开发一个 apache-flink(v 1.17.2)流应用程序,其中我的文件接收器是 Google Cloud Storage。性能非常差,我的任务管理器 100% 忙。我相信这与它向 .inprogress 临时文件写入太多小文件的问题有关。启用检查点(75 秒)后,它仅将一个部分将多达 220 个文件写入 .inprogress 状态。使用 1 个任务管理器,它可以将高达 500 个事件/秒写入云存储,我还使用 avro 格式作为输出文件。

这是我对文件接收器的定义

val sink: FileSink[Click] = FileSink
    .forBulkFormat(new Path(""), AvroWriters.forSpecificRecord(classOf[Click]))
    .withBucketAssigner(new ObjectStorageBucketAssigner())
    .withRollingPolicy(OnCheckpointRollingPolicy.build())
    .build()

我尝试更改以下配置:

state.backend.fs.memory-threshold
state.backend.fs.write-buffer-size
taskmanager.network.numberOfBuffers
taskmanager.network.memory.buffer-debloat.enabled

实际上对性能没有影响。 可以采取什么措施来改变这种行为并提高性能(吞吐量)?

google-cloud-storage apache-flink streaming flink-streaming
1个回答
0
投票
  1. state.backend.xxx
    设置用于将状态保存到文件系统,与文件接收器没有任何关系。
  2. 如果您的任务管理器 100% 繁忙,则问题可能不在于您的文件接收器。您的工作流程中存在某些问题导致 CPU 负载过高。
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.