使用Flume将数据流式传输到S3。

7

我正在尝试使用Flume来实现一个非常简单的功能,即将日志文件中的内容推送到S3。我已经成功创建了一个Flume代理程序,可以从Apache访问日志文件中读取内容并使用Logger Sink。现在,我正在尝试寻找一种解决方案,可以用“S3 Sink”替换Logger Sink。(我知道这不是默认存在的)

我正在寻找一些指导,以引导我走向正确的方向。下面是我目前正在使用的测试属性文件。

a1.sources=src1
a1.sinks=sink1
a1.channels=ch1

#source configuration
a1.sources.src1.type=exec
a1.sources.src1.command=tail -f /var/log/apache2/access.log

#sink configuration
a1.sinks.sink1.type=logger

#channel configuration
a1.channels.ch1.type=memory
a1.channels.ch1.capacity=1000
a1.channels.ch1.transactionCapacity=100

#links
a1.sources.src1.channels=ch1
a1.sinks.sink1.channel=ch1
2个回答

18

S3是建立在HDFS之上的,因此您可以使用HDFS sink,您必须以这种方式替换hdfs路径为您的存储桶。不要忘记替换AWS_ACCESS_KEY和AWS_SECRET_KEY。

agent.sinks.s3hdfs.type = hdfs
agent.sinks.s3hdfs.hdfs.path = s3n://<AWS.ACCESS.KEY>:<AWS.SECRET.KEY>@<bucket.name>/prefix/
agent.sinks.s3hdfs.hdfs.fileType = DataStream
agent.sinks.s3hdfs.hdfs.filePrefix = FilePrefix
agent.sinks.s3hdfs.hdfs.writeFormat = Text
agent.sinks.s3hdfs.hdfs.rollCount = 0
agent.sinks.s3hdfs.hdfs.rollSize = 67108864  #64Mb filesize
agent.sinks.s3hdfs.hdfs.batchSize = 10000
agent.sinks.s3hdfs.hdfs.rollInterval = 0

如果您无法访问HDFS怎么办? - user99999991
在配置文件中存储AWS凭证(通常存储在git中)并不是很安全,我敢打赌有更安全的方式可以通过环境变量来设置这些凭证。 - Alessandro S.

0

这是有道理的,但是这个值的rollSize可以伴随什么吗?

agent_messaging.sinks.AWSS3.hdfs.round = true
agent_messaging.sinks.AWSS3.hdfs.roundValue = 30
agent_messaging.sinks.AWSS3.hdfs.roundUnit = minute

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接