最近项目中用到了flume技术,flume也看过很多文档,但是一直感觉掌握不牢,有人曾说如果想深刻记住一个知识点就把它写出来,因此就出现了这篇博客。
Flume是一种分布式的可靠的服务,它能有效地采集、汇聚及传输大数据。
官网地址:http://flume.apache.org/FlumeUserGuide.html
1、Flume的基本概念
source 主要是用 来从源端采集数据,并传输到channelchannel 主要是缓存source传输过来的数据
sink 主要是从channel中取出数据并将其传入到目的地或者下一跳flume的source
event是数据传输的基本单位,比如采集端为日志文件,那么source按行解析文件,遇到‘\n’自动封装为一个even传输下去。
下面这张图是从官网取下来的
2、Flume的原理
Flume的原理比较简单,source端从目标位置采集日志,然后传输到channel端,传输的最小单位是event,sink端从channel端取数据,数据传输 成功后,将channel中的数据删除,保证了传输的高可靠性。flume还有一点比较NB的地方就是支持扇入扇出以及多跳。下面这张图是从官网取下 来的,一个source端可以传入到多个sink端。
3、Flume提供了默认的source和sink
Flume提供了默认的source,如:spooldir、netcat、exec、avro等
Flume也提供了默认的sink,如:hdfs、logger、hbase、avro等。
4、Flume的插件开发-自定义source和sink
如果flume提供的默认source和sink不满足实际需要,用户还可以自定义source和sink。
自定义source:需要extends AbstrackSource implements Configurable,在使用的时候type配置为source的全路径名。
自定义sink:需要extends AbstrackSource implements Configurable,在使用的时候type配置为sink的全路径名。
5、Flume的安装及配置
Flume的下载地址:http://www.apache.org/dyn/closer.lua/flume/1.7.0/apache-flume-1.7.0-bin.tar.gzFlume的安装很简单,只需要将tar.gz包解压即可:tar -zxvf apache-flume-1.7.0-bin.tar.gz
Flume的配置举例:
// agent组件
启动agent实例a1.source=s1
a1.channel=c1
a1.sink=k1
// source配置
a1.sources.s1.type=spooldir
a1.sources.s1.dir=/root/path
// sink配置
a1.sinks.k1.type=logger
// channel配置
a1.channels.c1.type=memory
a1.channels.capacity=1000
a1.channels.transactionCapacity=100
// source和sink绑定channel
a1.sources.s1.channel=c1
a1.sources.k1.channel=c1
bin/flume-ng agent -n a1 -c conf -f conf/properties.properties
其中-n指定agent名字 -c指定配置文件目录 -f指定flume配置文件
在root/path目录下新增一个文件,就可以在控制台看到flume已经将配置文件内容传输过来了,按照event传输的,每行对应一个event,一个event包含head、body及内容。再回到path目录,发现新增的文件被标记为.COMPLETED