1

我正在尝试在 Amaozn S3 中编写水槽事件。在 S3 中编写的事件是压缩格式的。我的 Flume 配置如下。我正面临数据丢失。根据下面给出的配置,如果我发布 20000 个事件,我只会收到 1000 个事件,并且所有其他数据都会丢失。但是当我禁用 rollcount、rollSize 和 rollInterval 配置时,所有的事件都被接收到了,但是创建了 2000 个小文件。我的配置设置有什么问题吗?我应该添加任何其他配置吗?

injector.sinks.s3_3store.type = hdfs
injector.sinks.s3_3store.channel = disk_backed4
injector.sinks.s3_3store.hdfs.fileType = CompressedStream
injector.sinks.s3_3store.hdfs.codeC = gzip
injector.sinks.s3_3store.hdfs.serializer = TEXT
injector.sinks.s3_3store.hdfs.path = s3n://CID:SecretKey@bucketName/dth=%Y-%m-%d-%H
injector.sinks.s3_1store.hdfs.filePrefix = events-%{receiver}
# Roll when files reach 256M or after 10m, whichever comes first
injector.sinks.s3_3store.hdfs.rollCount = 0
injector.sinks.s3_3store.hdfs.idleTimeout = 600
injector.sinks.s3_3store.hdfs.rollSize = 268435456
#injector.sinks.s3_3store.hdfs.rollInterval = 3600
# Flush data to buckets every 1k events
injector.sinks.s3_3store.hdfs.batchSize = 10000
4

1 回答 1

1

对于初学者:如果您禁用 rollCount、rollSize 等的设置,flume 将恢复为默认值,因此您收到的小文件是默认值。

相关方面是这样的:

injector.sinks.s3_3store.hdfs.batchSize = 10000

它基本上告诉您的接收器在刷新之前收集 10.000 个事件。如果减少该数量,您也会得到更小的文件,因为与常规 HDFS 相比,S3 不支持文件追加。刷新后,文件将被关闭并创建一个新文件。

尝试确定您的接收器将在几分钟左右的短时间内收到多少事件,并将该值设置为您的批量大小。

于 2015-05-20T10:34:14.720 回答