尝试使用Flume 1.3

来源:互联网 发布:免费数据库软件有哪些 编辑:程序博客网 时间:2024/06/06 19:39

flume ng是在flume og的基础上做的一个非常大的重构,基本上属于重写了。他和OG相比,简单了不少,但是随之用于管理的功能也少了不少,因为现在使用的是基于plugin的模式来设计,所以管理的功能可能会留待以后由第三方来做,flume只实现最核心的“传输”功能。OG中先前的master,zookeeper等都没有了,NG中只能使用本地的一个properties文件来配置

 

安装上之后,写个配置文件简单尝试了一下,source使用spoolDir,channel使用memory,sink使用hdfs,结果问题不断,只能说使用flume做数据采集,“坑很深”,或很考验“经验”

a1.sources =  r1
a1.sinks = k1
a1.channels = c1

a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /var/log/apache/flumeSpool
a1.sources.r1.fileHeader = true

a1.sources.r1.interceptors = i1 i2
a1.sources.r1.interceptors.i1.type = org.apache.flume.interceptor.HostInterceptor$Builder
a1.sources.r1.interceptors.i1.preserveExisting = false
a1.sources.r1.interceptors.i1.hostHeader = hostname
a1.sources.r1.interceptors.i2.type = org.apache.flume.interceptor.TimestampInterceptor$Builder

a1.sinks.k1.type = hdfs 
a1.sinks.k1.hdfs.path = hdfs://server240:9000/tmp/flume
a1.sinks.k1.hdfs.rollInterval = 0 
a1.sinks.k1.hdfs.idleTimeout=60
a1.sinks.k1.hdfs.rollSize = 0 
a1.sinks.k1.hdfs.rollCount = 0 
a1.sinks.k1.hdfs.writeFormat = Text 
a1.sinks.k1.hdfs.fileType = DataStream

a1.channels.c1.type = file

a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

 

首先,拷贝到同步路径下时,不能使用cp,因为文件还没有拷贝完,flume就会识别到新生成了一个文件,于是开始同步。。。所以最好使用cp -s,或ln -s建立一个链接

其次,如果仍进去一个二进制的文件,报错不断,可能因为spoolDir采用的是readLine的方式,在二进制文件上readLine,不清楚会发生什么问题。。。似乎和事务有关,反正传输完之后从hdfs里面取出文件,和源文件对比发现MD5变了,将memory channel换成file channle,结果依然不对。

另外,传输1G的存文本文件,使用spoolDir+memory,性能也不敢恭维

 

可能我使用的方式不对,网上说传输文件应该使用avro-client的方式,但是还没有尝试,但是不管如何,要想使用flume1.3来做采集,需要深入的仔细研究清楚才可以进行,否则容易栽跟头。。。有深入研究过的朋友,可以深入探讨一下

原创粉丝点击