需求分析
根据游戏部门的需求,他们需要会将论坛图片存储到本地目录,然后需要将这些图片实时上传到S3上并做CDN映射。图片格式为
jpg
或者jpeg
格式。在将文件存储到S3时要按照天为目录,并保留原文件名。
Flume配置
配置文件名为
game.imp.conf
配置内容如下
# Name the components on this agent
game.sources = r1
game.sinks = k1
game.channels = c1
game.deserializer.maxLineLength = 1048576
# flow for ios impression
game.sources.r1.channels = c1
game.sources.k1.channels = c1
game.sources.r1.type = spooldir
# 配置本地监控目录
game.sources.r1.spoolDir=/opt/appfile/forumfile/spooldir
#一个BLOB(Binary Large Object )对象为一个event常见的是一个文件为一个BLOB对象,比如一个PDF或者一个JPG。
#注意这种方式处理的文件不宜过大,因为会将整个BLOB对象缓存在RAM中。
game.sources.r1.deserializer = org.apache.flume.sink.solr.morphline.BlobDeserializer$Builder
game.sources.r1.deserializer.maxBlobLength = 100000000
#在event中加上一个header,以保存event所属文件的文件名
game.sources.r1.basenameHeader=true
#用以保存event所属文件的文件名的header的key
game.sources.r1.basenameHeaderKey=basename
#文件被flume处理过后,为其加后缀
game.sources.r1.fileSuffix = .bak
game.channels.c1.type = memory
game.channels.c1.capacity=100000
game.channels.c1.transactionCapacity=5000
game.sinks.k1.type = hdfs
game.sinks.k1.hdfs.useLocalTimeStamp = true
game.sinks.k1.hdfs.path = s3a://flume-gamefilecdn/forumfile/%Y%m%d/
game.sinks.k1.channel = c1
game.sinks.k1.hdfs.callTimeout = 300000
game.sinks.k1.hdfs.filePrefix = %{basename}
game.sinks.k1.hdfs.fileType = DataStream
因为文件上传到S3因此需要配置S3的信息,主要操作是在conf目录下面创建core-site.xml文件,然后再文件中添加以下内容。
<configuration>
<property>