Flume安装

 什么是Flume?

  Apache Flume是一个分布式、可靠、高可用的海量日志聚合系统,支持在系统中定制各种数据源发送给指定的数据接收方;同时Flume还提供简单的数据处理的方法。

 Flume的三大组成

  (1)source

    完成数据的收集,分成 transtion和 event将数据传送到Channel;

    Flume提供了丰富的数据收集方法的实现,如: AvroSource、Exce Source、Spooling Directory Source、NetCat Source、Syslog Source、Syslog TCP Source、Syslog UDP Source、HTTP Source、HDFS Source等等;

    如: Exce Source:以运行Linux命令的方式,持续的输出最新的数据,如tail -f文件名指令,在这种方式下,取出的文件名必须是指定的;

       Spool Source:是监控配置目录下新增的文件,并将文件中的内容读取出来

  (2)Sink

    Sink的作用是取出Channel中的数据,推送到相应的文件或数据存储系统(如Kafka、Hadoop的HDFS)、数据库、或者提交到远程服务器;

    Flume Sink也提供了各种sink的实现,包括HDFS sink、Logger sink、Avro sink、File Roll sink、Null sink、HBase sink等等;

    Flume Sink在设置存储数据时,可以向文件系统、数据库、Hadoop中存储数据,在日志数据较小时,可以将数据存储在文件中,并且设定一定的时间间隔保存数据。在日志数据较多时,可以将相应的日志数据存储到Hadoop中,便于日后对数据进行分析。

  (3)Channel

     Flume Channel主要提供一个队列的能力,对Source中的数据进行简单的缓存;

     Flume对Channel则提供了Memory Channel、JDBC Channel、File Channel;

     Memory Channel:可以实现高吞吐量,但是无法保证数据的完整行;

     File Channel:保证数据的完整性和一致性。在具体配置FileChannel时,建议FileChannel设置的目录和程序日志文件保存的目录在不同磁盘,从而提高效率。

  Flume的安装

  (1)确保系统已经安装了JDK1.7+,并且配置了Java的环境变量;

  (2)下载二进制安装包,地址:http://flume.apache.org/download.html

  (3)创建Flume用户,上传Flume到用户目录,解压,重命名;

  (4)复制flume-env.sh.template到flume-env.sh,复制flume-conf.properties.template到flume-conf.properties

   Flume数据收集测试

  利用netcat,发送数据,测试flume是否能收到数据:

  Flume的配置如下:

agent.sources = r1
agent.channels = memoryChannel
agent.sinks = k1

# For each one of the sources, the type is defined
agent.sources.r1.type = netcat
agent.sources.r1.bind = localhost
agent.sources.r1.port = 8888
agent.sources.r1.channels = memoryChannel

# Each sink's type must be defined
agent.sinks.k1.type = logger                 #sink的type是logger,收集的数据会进行日志打印
agent.sinks.k1.channel = memoryChannel # Each channel's type is defined. agent.channels.memoryChannel.type = memory agent.channels.memoryChannel.capacity = 100 agent.channels.transactionCapacity = 100

  从配置文件可以看出,此处的flume代理的名字是agent,采集的数据类型是 localhost 的netcat,端口是8888,数据存储类型是内存存储。

  启动flume:

flume-ng agent -n agent -c conf -f /home/flume/flume/conf/flume-conf.properties -Dflume.root.logger=INFO,console

  命令参数说明:

  -n: 是-name的缩写,是指代理的名称,在上面的flume中,我们的代理名称是agent;

  -c: 是-conf的缩写,是指配置文件flume-conf.properties所在的目录;

  -f: 是-file的缩写,是指配置文件flume-conf.properties的路径;

  -Dflume.root.logger=INFO,console 设置日志等级

  同时利用netcat发送信息,我们看flume 的输出信息:

 

  我们可以看到Flume成功收集到我们nc发送的信息。

  

posted @ 2018-02-09 17:36  星星满天  阅读(258)  评论(0编辑  收藏  举报