flume的简介

一、基本概念

1.flume定义

  flume 是一个分布式的、可靠的、可用的服务,用于高效的收集、聚合和移动大量的流式数据

  注意:flume-ng只有一个节点agent。不是传统意义上的分布式的,没有主从节点,没有什么直接的联系,彼此之间是独立的,对各个组件进行配置实现数据的移动

2.功能:

  收集数据(source)
  聚合数据(channel)
  移动数据(sink)

3.agent

  agent是一个JVM进程,可以将event从外部源流向下一个目标(agent 由三个组件source、channel、sink组成的)

4.三大组件

  source:Java的程序,负责数据流的采集,从监控的地方采集数据流到channel中(相当于cp)
  channel:source采集的数据流临时存放的地方,数据流就只有一份,sink取走了之后数据就没有了(相当于MV)
  sink:Java程序,负责将数据从channel中移动到目标地

5.event

  event:是数据移动的基本单位,由零个或者多个header和正文body组成
  header:是key-value形式存在的,用来传输正文之外的额外信息(如事件的时间戳或事件来源的服务器主机名)
  body:是一个字节数组,包含了实际的内容
  数据都是以字节的形式存储的,默认是将每一行数据分装成为一个event(实现方式:按字节读取,当遇到"\n"时封装成Event)

6.flume的可靠性

  event存储在每个agent的channel中,然后sink将event传递给下一个agent中或者终端存储库(如HDFS)。只有将event存储到下一个agent的channel中或者终端存储库中后,才会从通道中删除这些文件

7.flume可恢复性(本地磁盘通道)

  本地磁盘通道:将event存储本地,速度慢,但是当agent进程死亡时保留在channel中的event不会丢失

  内存通道:将event存储在内存中的队列中,这更快,但是当agent进程死亡时仍然留在内存channel中的event无法恢复

二、安装部署测试  

1.CDH版本下载地址

  http://archive.cloudera.com/cdh5/cdh/5/flume-ng-1.6.0-cdh5.14.4.tar.gz

2.解压安装

  tar -zxvf /opt/tools/flume-ng-1.6.0-cdh5.14.4.tar.gz -C /opt/modules/

3.修改配置文件

  mv conf/flume-env.sh.template conf/flume-env.sh

  vim flume-env.sh

    export JAVA_HOME=/opt/modules/jdk1.8.0_91

4.简单测试

  将hive日志动态采集到日志中显示:编写agent文件,里面配置source,channel,sink三个部分

    

        //define the agent
        a1.sources = s1
        a1.channels = c1
        a1.sinks = k1
        
        //define the source
        a1.sources.s1.type = exec
        a1.sources.s1.command =  tail -F /opt/modules/hive-1.1.0-cdh5.7.6/hive.log
        a1.sources.s1.channels = c1
        
        //define the channel
        a1.channels.c1.type = memory
        a1.channels.c1.capacity = 1000
        a1.channels.c1.transactionCapacity = 100 

        //define the sink
        a1.sinks.k1.type = hdfs
        a1.sinks.k1.hdfs.path = /flume/part/daystr=%Y%m%d/hour=%H
        a1.sinks.k1.hdfs.fileType = DataStream
        a1.sinks.k1.hdfs.rollInterval = 0
        a1.sinks.k1.hdfs.rollSize = 10240
        a1.sinks.k1.hdfs.rollCount = 0
        a1.sinks.k1.hdfs.useLocalTimeStamp = true
        a1.sinks.k1.channel = c1 

 5.运行配置文件

  bin/flume-ng agent --conf conf/ --name a1 --conf-file /opt/data/flume.conf -Dflume.root.logger=INFO,console

  bin/flume-ng agent --conf|-c flume_conf_dir --name|-n agent_name --conf-file|-f file_path -Dflume.root.logger=INFO,console

    --conf|-c:指定flume的conf文件目录  

    --conf-file|-f:运行的文件地址 

    --name|-n:运行agent的名称

    -Dflume.root.logger=INFO,console:调整flume的日志级别

  

猜你喜欢

转载自www.cnblogs.com/WeiKing/p/11162027.html