首页 > Web开发 > 详细

Flume简介

时间:2019-11-23 11:26:15      阅读:78      评论:0      收藏:0      [点我收藏+]
  1. Flume概念
    • Flume是Cloudera提供的一个高可用,高可靠,分布式的海量日志采集、聚合和传输的系统
    • Flume支持在日志系统中定制各种数据发送方,用于收集数据
    • Flume提供对数据进行处理,并写到各种不同的数据接收方的能力(可定制).
  2. Flume架构
    • Flume的核心是把数据从数据源收集过来再送到目的地,为了保证输送的成功,在送到目的地前flume会缓存数据,等到数据传输完成后,再删掉自己缓存的数据
    • Flume的核心角色是agent,flume采集系统就是由一个个agent所链接起来的
    • flume的agent有三个组件组成
      • source
        • 采集组件,数据的收集端,负责跟数据源对接,以获取数据,source会在将数据捕获后,对数据进行格式化,将数据封装到事件(Event)中,然后将事件推入到channel中
        • source 主要分以下几种
          • Avro Source
            • Listens on Avro port and receives events from external Avro client streams.
          • Thrift Source
            • Listens on Thrift port and receives events from external Thrift client streams.
          • Exec Source
            • Exec source runs a given Unix command on start-up and expects that process to continuously produce data on standard out (stderr is simply discarded, unless property logStdErr is set to true)
          • Spooling Directory Source
            • This source lets you ingest data by placing files to be ingested into a “spooling” directory on disk
        • 除了以上几种外还有JMS Source 、NetCat Source、Syslog Source、Syslog TCP Source、Syslog UDP Source、HTTP Source、HDFS Source,etc。而且Flume还允许自定义source
      • channel
        • 传输通道,可以缓存数据,用于从source将数据传输给sink
        • Flume对于Channel,则提供了Memory Channel、JDBC Chanel、File Channel,etc。
      • sink
        • 下沉组件,取出channel的数据,进行相应的存储文件系统、数据库、提交到远程的服务器或者是下一级的agent中
          • Flume也提供了很多sink的实现,包括HDFS sink、Logger sink、Avro sink、File Roll sink、Null sink、HBase sink,etc。
  3. Flume 采集系统
    • 简单结构
      • 单个agent采集数据
        技术分享图片
    • 复杂结构
      • 两个agent互联
        技术分享图片
      • 多个agent互联
        技术分享图片
      • 多个channel
        技术分享图片
  4. Flume的安装
    Flume的安装比较简单
    1. 下载安装包
      官网地址http://archive.cloudera.com/cdh5/cdh/5/flume-ng-1.6.0-cdh5.14.2.tar.gz
    2. 规划安装目录
      /bigdata/install
    3. 解压安装包到指定的规划目录,并重命名文件夹
      tar -zxvf flume-ng-1.6.0-cdh5.14.2.tar.gz -C /bigdata/install mv apache-flume-1.6.0-cdh5.14.2-bin flume-1.6.0-cdh5.14.2
    4. 修改配置文件
      • 将 /bigdata/install/flume-1.6.0-cdh5.14.2/conf/里面的 flume-env.sh.template 重命名为 flume-env.sh
      • 修改flume-env.sh
        export JAVA_HOME=${your java home}
  5. 实例
    • 需求
      监控某个文件如果又新增内容就把数据采集到控制台显示
    • 修改配置文件
      在flume的安装目录新建一个myconf文件夹用于存放flume的开发配置文件
      vim tail-log.conf

          #定义一个agent,分别指定source、channel、sink别名
          a1.sources = r1
          a1.channels = c1
          a1.sinks = k1
      
          #定义source
          #指定source的类型为exec,即通过Linux命令来传输数据
          a1.sources.r1.type = exec
          #监控一个文件,如果有新的数据产生就采集走
          a1.sources.r1.command = tail -F /bigdata/data/flume/tail.log
          #指定source的数据流入的channel中
          a1.sources.r1.channels = c1
      
          #配置channel
          #指定channel的类型为memory
          a1.channels.c1.type = memory
          #指定channel 最多可以存放的容量
          a1.channels.c1.capacity = 1000
          #指定事务中source写数据到channel或者sink从channel中取数据的最大的条数
          a1.channels.c1.transactionCapacity = 100
      
          #配置sink
          #指定sink从哪个channel中获取数据
          a1.sinks.k1.channel = c1
          #指定sink的类型为日志格式。结果会打印在控制台中
          a1.sinks.k1.type = logger
    • 启动agent
      进入到node01的/bigdata/install/flume-1.6.0-cdh5.14.2目录执行
      ```
      bin/flume-ng agent -n a1 -c myconf -f myconf/tail-log.conf -Dflume.root.logger=info.console

        -n指定该agent的名称
        -c表示配置文件所在的目录
        -f指定配置文件
        -D表示指定key=value键值对---这里指定的是启动的日志输出级别

      ```

Flume简介

原文:https://www.cnblogs.com/William364248886/p/11915304.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!