Flume相关知识整理

       最近项目中用到了flume技术,flume也看过很多文档,但是一直感觉掌握不牢,有人曾说如果想深刻记住一个知识点就把它写出来,因此就出现了这篇博客。

       Flume是一种分布式的可靠的服务,它能有效地采集、汇聚及传输大数据。

       官网地址:http://flume.apache.org/FlumeUserGuide.html

    1、Flume的基本概念

         source 主要是用  来从源端采集数据,并传输到channel
         channel 主要是缓存source传输过来的数据
         sink 主要是从channel中取出数据并将其传入到目的地或者下一跳flume的source

         event是数据传输的基本单位,比如采集端为日志文件,那么source按行解析文件,遇到‘\n’自动封装为一个even传输下去。

         下面这张图是从官网取下来的

          Flume相关知识整理

    2、Flume的原理

         Flume的原理比较简单,source端从目标位置采集日志,然后传输到channel端,传输的最小单位是event,sink端从channel端取数据,数据传输            成功后,将channel中的数据删除,保证了传输的高可靠性。flume还有一点比较NB的地方就是支持扇入扇出以及多跳。下面这张图是从官网取下          来的,一个source端可以传入到多个sink端。

         Flume相关知识整理

    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.gz
          Flume的安装很简单,只需要将tar.gz包解压即可:tar -zxvf apache-flume-1.7.0-bin.tar.gz
          Flume的配置举例: 
           // 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

        启动agent实例
        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