我在做一个Apache Flink(v 1.17.2)流媒体应用程序,其中我的文件接收器是谷歌云存储.性能非常差,我的任务管理器/s是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
在实践中,这对性能没有影响。如何改变这种行为并提高性能(吞吐量)?
2条答案
按热度按时间sc4hvdpw1#
state.backend.xxx
设置用于将状态保存到文件系统,与您的文件接收器无关。1.如果你的任务管理器100%的忙碌,问题可能不是你的文件接收器,而是你的工作流中的某些东西导致了高CPU负载。
jucafojl2#
也许文档中描述的文件压缩特性与您的情况有关。