zoukankan      html  css  js  c++  java
  • 分布式日志收集系统:Flume

     

    flume原理图

    Flume知识点:

    Event 是一行一行的数据
    1.flume是分布式的日志收集系统,把收集来的数据传送到目的地去。
    2.flume里面有个核心概念,叫做agent。agent是一个java进程,运行在日志收集节点。
    3.agent里面包含3个核心组件:source、channel、sink。
    3.1 source组件是专用于收集日志的,可以处理各种类型各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy、自定义。
    source组件把数据收集来以后,临时存放在channel中。
    3.2 channel组件是在agent中专用于临时存储数据的,可以存放在memory、jdbc、file、自定义。
    channel中的数据只有在sink发送成功之后才会被删除。
    3.3 sink组件是用于把数据发送到目的地的组件,目的地包括hdfs、logger、avro、thrift、ipc、file、null、hbase、solr、自定义。
    4.在整个数据传输过程中,流动的是event。事务保证是在event级别。
    5.flume可以支持多级flume的agent,支持扇入(fan-in)、扇出(fan-out)。
    扇入指的是:source 可以接收多个输入
    扇出指的是:sink可以输出多个目的地


    Flume安装:

    1.分别解压这两个文件在节点里:
    这里写图片描述
    2.把src内容 复制到bin下:

    cp -ri apache-flume-1.4.0-src/* apache-flume-1.4.0-bin/

    3.src没用可以删掉了:

    rm -rf apache-flume-1.4.0-src

    4.重命名apache-flume-1.4.0-bin 为flume:

    mv apache-flume-1.4.0-bin/ flume

    注意:flume安装的 前提是你已经安装了hadoop ,因为它要用到hadoop的jar

    5 . 书写配置文件example

    agent1表示代理名称:

    agent1.sources=source1
    agent1.sinks=sink1
    agent1.channels=channel1

    Spooling Directory是监控指定文件夹中新文件的变化,一旦新文件出现,就解析该文件内容,然后写入到channle。写入完成后,标记该文件已完成或者删除该文件。

    配置source1

    agent1.sources.source1.type=spooldir
    agent1.sources.source1.spoolDir=/root/hmbbs
    agent1.sources.source1.channels=channel1
    agent1.sources.source1.fileHeader = false
    agent1.sources.source1.interceptors = i1
    agent1.sources.source1.interceptors.i1.type = timestamp

    配置sink1

    agent1.sinks.sink1.type=hdfs
    agent1.sinks.sink1.hdfs.path=hdfs://hadoop0:9000/hmbbs
    agent1.sinks.sink1.hdfs.fileType=DataStream
    agent1.sinks.sink1.hdfs.writeFormat=TEXT
    agent1.sinks.sink1.hdfs.rollInterval=1 //指定时间文件被关闭
    agent1.sinks.sink1.channel=channel1
    agent1.sinks.sink1.hdfs.filePrefix=%Y-%m-%d //生成文件的前缀

    配置channel1

    agent1.channels.channel1.type=file
    //备份目录
    agent1.channels.channel1.checkpointDir=/root/hmbbs_tmp/123
    agent1.channels.channel1.dataDirs=/root/hmbbs_tmp/

    把该文件写入flume 的conf文件夹下,并命名为example

    6.在root目录下创建文件夹hmbbs

    [root@hadoop /]# cd /root
    [root@hadoop ~]# ls
    anaconda-ks.cfg Documents install.log Music Public Videos
    Desktop Downloads install.log.syslog Pictures Templates
    [root@hadoop ~]# mkdir hmbbs

    7.在hadoop下创建文件夹

    hadoop fs -mkdir /hmbbs

    8.执行flume
    进入flume执行命令

    bin/flume-ng agent -n agent1 -c conf -f conf/example -Dflume.root.logger=DEBUG,console

    9.创建

    [root@hadoop ~]# vi hello
    [root@hadoop ~]# cp hello hmbbs

    在hdfs里会看到文件传输了进去

    10 .

    [root@hadoop ~]# cd hmbbs
    [root@hadoop hmbbs]# ls
    hello.COMPLETED

    红色部分表示任务完成,已经传输到channel中,后缀.COMPLETED是重新命名后的结果。

    [root@hadoop ~]# cd hmbbs_tmp
    [root@hadoop hmbbs_tmp]# ls

    hmbbs_tmp表示的是channel使用的目录。

    [root@hadoop hmbbs_tmp]# cd 123
    [root@hadoop 123]# ls
    checkpoint checkpoint.meta inflightputs inflighttakes

    这里的数据是备份数据,如果datadir里数据丢失可以从这里恢复。

    在实际生产中是多节点配置,比较复杂,可以参考官方文档:
    http://flume.apache.org

  • 相关阅读:
    CodeForces 681D Gifts by the List (树上DFS)
    UVa 12342 Tax Calculator (水题,纳税)
    CodeForces 681C Heap Operations (模拟题,优先队列)
    CodeForces 682C Alyona and the Tree (树上DFS)
    CodeForces 682B Alyona and Mex (题意水题)
    CodeForces 682A Alyona and Numbers (水题,数学)
    Virtualizing memory type
    页面跳转
    PHP Misc. 函数
    PHP 5 Math 函数
  • 原文地址:https://www.cnblogs.com/bigdata1024/p/8387446.html
Copyright © 2011-2022 走看看