S3 Flume HDFS SINK压缩

时间:2015-05-20 03:46:36

标签: hadoop amazon-s3 flume-ng

我正在尝试在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

1 个答案:

答案 0 :(得分:1)

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

相关方面是:

injector.sinks.s3_3store.hdfs.batchSize = 10000

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

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