• flume1.8的安装及环境配置


    简介FLume

    官网:http://flume.apache.org/

        A1.flume 作为 cloudera 开发的分布式、可靠、高可用的海量实时日志聚合系统,支持在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据的简单处理,并写到各种数据接收方的能力。

        A2.它具有可靠的可靠性机制和许多故障转移和恢复机制,具有强大的容错能力

        A3.它使用简单的可扩展数据模型,允许在线分析应用程序。Flume可以将应用产生的数据存储到任何集中存储器中,比如HDFS,HBase等。

        B1.Flume 支持多种来源,如:

    • “tail”(从本地文件,该文件的管道数据和通过Flume写入 HDFS,类似于Unix命令“tail”)

    • 系统日志

    • Apache log4j (允许Java应用程序通过Flume事件写入到HDFS文件)。

       

        C1.工作结构图:

    D1.Flume-ng 核心三大组建
    (官网:http://flume.apache.org/)

         Flume-ng只有一个角色的节点:agent的角色,agent由source、channel、sink组成。

        Source:Source用于采集数据,Source是产生数据流的地方,同时Source会将产生的数据流传输到Channel

        Channel:连接 sources 和 sinks ,这个有点像一个队列。

        Sink:从Channel收集数据,将数据写到目标源,可以是下一个Source也可以是HDFS或者HBase。

     

        Event是Flume数据传输的基本单元

        source监控某个文件,将数据拿到,封装在一个event当中,并put/commit到channel当中,channel是一个队列,队列的优点是先进先出,放好后尾部一个个event出来,sink主动去从channel当中去拉数据,sink再把数据写到某个地方,比如HDFS上面去。

    学习方向:

    一 .安装FLume  

      1.1  对Flume有了解的都知道,Flume是依赖JDK的,如果没有安装JDK的请看我的另一篇随笔:https://www.cnblogs.com/KdeS/p/11526907.html ,简单易懂,

     1.2  切换root权限,装备下载Flume,这里我下载的是1.8的版本的,详细如下:

    1 wget http://apache.fayea.com/flume/1.8.0/apache-flume-1.8.0-bin.tar.gz

    1.3 解压

    1 tar zxvf apache-flume-1.8.0-bin.tar.gz

    1.4 为了方便管理,我们在opt目录下新建一个文件文件名字就叫flume,把解压后的Flume放到放到flume目录下,为了方便记录把解压后的'-bin'这一部分去掉,如下:

    1 mv apache-flume-1.8.0-bin   /opt/flume/apache-flume-1.8.0

    二.环境配置

         2.1 为了运行方便,我们把bin目录加到Path中,如下:

        

    1 vim /etc/profile
    1 export FLUME_HOME=/opt/flume/apache-flume-1.8.0
    2 export PATH=$PATH:$FLUME_HOME/bin

         2.2   source  /etc/profile

         2.3  .  /etc/profile(点的后面有个空格)

         2.4  测试一下是否安装成功:(bin/flume-ng.sh 查看flume的flume-ng命令相关命令)

    三.根据官网上的配置运行官网上的一个配置案例:从指定网络端口采集数据输出到控制台

     

     图片中的红框中的内容相当于配置一个Agent(代理)
    3.1 创建flume-test.properties

    1 cd /opt/flume/apache-flume-1.8.0/conf 
    2 
    3 touch flume-test.properties 
    4 
    5 vi  flume-test.properties 

    复制官网上的案例进行更改

    3.2 进入同级目录下的log4j.properties文件,更改log4j的日志级别,

    flume.root.logger=INFO,LOGFILE 更改为flume.root.logger=INFO,console(在控制台输出)

    四.安装telnet

    1、检查是否安装telnet:

    [root@localhost ~]# rpm -qa | grep telnet

    若无输出内容,则表示没有安装。

    2、进行telnet安装,客户端和服务器端:

    yum -y install telnet

    yum -y install telnet-server

    3、查看是否安装xinetd (若安装则不安装):

    rpm -qa | grep xinetd

    4、安装xinetd服务:

    yum -y install xinetd

    5、telnet服务之后,默认是不开启服务,修改文件/etc/xinetd.d/telnet来开启服务:

    注:如有则修改,第一次修改,此文件若不存在,可自己vim创建修改:
            修改 disable = yes 为 disable = no

    修改后的telnet文件为:

    # default: yes
    
    # description: The telnet server servestelnet sessions; it uses 
    
    #      unencrypted username/password pairs for authentication.
    service telnet
    
    {
      flags           = REUSE
      socket_type     = stream
      wait            = no
      user            = root
      server          =/usr/sbin/in.telnetd
      log_on_failure  += USERID
      disable         = no
    }

    6、安装后检查:

    rpm -qa | grep telnet
    
    rpm -qa | grep xinetd

    7、启动telnet和依赖的xinetd服务:

    在centos7之前:$ service xinetd restart 或 $ /etc/rc.d/init.d/xinetd restart

    在centos7中(无xinetd的service启动项):service xinetd restart -----> systemctl restart xinetd.service 或 /bin/systemctl restart xinetd.service

    8、查看xinetd服务启动:

    ps -ef | grep xinetd

    10、测试telent,

      在测试前在防火墙中开启对应的端口或者直接选择关闭防火墙,如下远程连接,

     五.测试运行flume-test.properties

    bin/flume-ng agent --conf conf --name a1 --conf-file conf/flume-test.properties 

     

    如上完成之后使用telnet链接或者使用netcat链接,连接成功后输入信息

    telnet 192.168.142.167 44444 

     退出telnet:输入ctrl + ] 然后输入quit

    六.根据官网上的配置运行官网上的一个配置案例:监控一个文件实时采集新增的数据输出到控制台

     6.1 创建 flume-apache-file.properties 

    #为agent的各个组件命名  
    #本例中,agent的名称为"a1"   
    a1.sources = r1
    a1.sinks = k1
    a1.channels = c1
    
    # 描述/配置源
    a1.sources.r1.type =exec
    a1.sources.r1.command = tail -f /var/log/httpd/access_log 
    
    
    # type为logger意将数据输出至日志中(也就是打印在屏幕上)  
    a1.sinks.k1.type = logger
    
    #channel配置信息  
    #type为memory意将数据存储至内存中
    a1.channels.c1.type = memory  
    a1.channels.c1.capacity = 1000    
    a1.channels.c1.transactionCapacity = 100  
    
    #将源和汇绑定到通道
    a1.sources.r1.channels = c1 
    a1.sinks.k1.channel = c1 
    # 与第一个案列不同之处变动在于这两点
    a1.sources.r1.type =exec
    #tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容 a1.sources.r1.command = tail -f /var/log/httpd/access_log

    6.2  如上的配置有一个缺点,flume每次重启后都会重新从头消费,实际项目中我搭建的flume>>kafka>>elasticseach>>kibana,

    数据都是百万级的,flume不小心挂了重启的话,重新消费后会在es中有两份重复的数据,所以推荐一下的另一种配置方式

    p1_agent.sources = exec-source
    p1_agent.channels = memoryChannel
    p1_agent.sinks = kafka-sink
    
    
    # sources define
    p1_agent.sources.exec-source.type = TAILDIR
    p1_agent.sources.exec-source.positionFile = /var/log/flume/taildir_position.json
    p1_agent.sources.exec-source.filegroups = f1
    p1_agent.sources.exec-source.filegroups.f1 = /opt/p1upgradebackstage/access_logs/localhost_access_log.*
    p1_agent.sources.exec-source.headers.f1.logType = access_log
    p1_agent.sources.exec-source.headers.f1.headerKey1 = value1
    p1_agent.sources.exec-source.fileHeader = true
    p1_agent.sources.exec-source.maxBatchCount = 1000
    
    # sinks define
    #p1_agent.sinks.kafka-sink.type = logger
    p1_agent.sinks.kafka-sink.type = org.apache.flume.sink.kafka.KafkaSink
    p1_agent.sinks.kafka-sink.brokerList = master59:9092,slave145:9092,slave113:9092
    p1_agent.sinks.kafka-sink.topic = pd_p1upgradebackstage
    p1_agent.sinks.kafka-sink.batchSize = 5
    p1_agent.sinks.kafka-sink.requiredAcks = 1
    
    # channels define
    p1_agent.channels.memoryChannel.type = memory
    p1_agent.channels.memoryChannel.capacity = 100
    
    
    # bind sources to channels  and sinks to channels
    p1_agent.sources.exec-source.channels = memoryChannel
    p1_agent.sinks.kafka-sink.channel = memoryChannel                                                                                                                                          

    6.3 启动

    bin/flume-ng agent --name a1 --conf conf --conf-file flume-apache-file.properties

    //后台启动 正式环境一般都是后台启动
    nohup bin/flume-ng agent --name a1 --conf conf --conf-file flume-apache-file.properties  &

     

  • 相关阅读:
    LINQ To SQL: Eager Loading
    返回JSon格式数据
    Tips
    Easyui的DateBox日期格式化
    jquery treeview 展开指定节点,选中指定节点
    jquery treeview 功能参数
    Javascript 中 ShowModalDialog 的使用方法
    GetDlgItem用法
    20个开源项目托管站点推荐
    DLINQ(十): 分层构架的例子
  • 原文地址:https://www.cnblogs.com/KdeS/p/11528829.html
Copyright © 2020-2023  润新知