zoukankan      html  css  js  c++  java
  • 02_Flume1.6.0安装及单节点Agent实践

    Flume1.6.0的安装
    1、上传Flume-1.6.0-tar.gz到待部署的所有机器
         以我的为例: /usr/local/src/

    2、解压得到flume文件夹
          # tar -xzvf flume-1.6.0-tar.gz

    3、修改文件夹名称,属主,及权限
         # mv flume-1.6.0 flume
         # chown -R root:root flume
        # chmod 755 flume

    4、安装完毕,解压后可以直接使用,通过flume/conf下的配置文件修改就可以各种调戏了~


    实践1 - 单节点Agent

     

    1、配置文件

    # 01-flume-netcat-test
    # agent name: a1
    # source: netcat
    # channel: memory
    # sink: logger, local console
    
    # 01 define source,channel,sink name
    a1.sources = r1
    a1.channels = c1
    a1.sinks = k1
    
    # 02 define source
    a1.sources.r1.type = netcat
    a1.sources.r1.bind = localhost # ip地址也OK
    a1.sources.r1.port = 4444
    
    # 03 define sink
    a1.sinks.k1.type = logger      # flume sink将拉取到的信息,event形式打印到自己被启动时的终端
    
    # 04 define channel
    a1.channels.c1.type = memory
    # number of events in memory queue 内存队列中的最大event数值
    a1.channels.c1.capacity = 1000 
    # number of events for 1 commit(每次向memory queuet放入event,取出event的最大值),所以肯定是比内存队列中的event小
    a1.channels.c1.transactioncapacity = 100
    
    # 05 bind source,sink to channel
    a1.sources.r1.channels = c1 # 1个source可以有多个channel
    a1.sinks.k1.channel = c1      # 1个sink只能从1个channel取数据

    2、启动本节点上的flume agent

    # bin/flume-ng agent --conf conf --conf-file ./conf/flume-netcat.properties --name a1 -Dflume.root.logger=INFO,console

     解读:使用conf目录下的flume-netcat.properties文件,启动agent, agent的名称为a1;
                flume向console打印INFO级别及以上的日志信息



    3、观察Flume agent的启动

    flume启动过程中会向当前console打印INFO及以上级别的日志,在日志的最后可以看到a1启动,并且netcat source启动了1个serversocket,监听本机的4444端口

    4、测试该Agent

    再开启1个到telnet到Agent所在机器的命令行窗口,连接建立后输入数据,查看flume是否向console打印出了输入数据


    1) telnet输入

    2) Flume输出event到console

    3) telnet输入16个以上字符

    4) Flume的logger sink, 输出event只有16个字符

    telnet退出:ctrl+], 然后quit

    通过flume的Git源码发现,默认情况下logger sink能够输出的最大字符数为16,该问题已经被提交修改,但flume-1.6.0版本并没有解决该问题

     

    实践2 - 单节点Agent

    exec source:执行配置文件中给定的命令,监听命令的输出,输出的每一行被作为一个event

    1、停止前一个flume agent进程
    # ps -aux | grep flume 找到该进程的pid
    # kill pid 不要kill -9 pid

    2、配置文件

    3、在agent运行的主机上创建测试用log文件,和配置文件中的路径及名称保持一致:/root/flume_test/server.log

    4、启动本节点上的flume agent

    # bin/flume-ng agent --conf conf --conf-file ./conf/flume-exec.properties --name a1 -Dflume.root.logger=INFO,console

    解读:
    使用conf目录下的flume-exec.properties文件,启动agent, agent的名称为a1;
    flume向console打印INFO级别及以上的日志信息

    5、根据flume agent启动时的日志,判断exec agent是否正常启动,执行给定命令,并监听输出(一行为一个event)

    6、向flume agent机器上的测试log日志,写入内容,查看flume是否将新的输出转换为event,最终输出到终端


    1)管道追加方式向server.log文件写入数据

    2)flume输出event到自身被启动时的终端

    3)再追加一次

    4)查看flume是否输出event到自身被启动时的终端

    5)查看server.log的文件结构,验证是否一行数据对应一个event

    管道方式追加,在文件中生成了2行记录,分别对应一个flume event (命令执行结果的每一行输出,对应一个event)


    实践3 - 单节点Agent


    1、停止前一个flume agent进程
    # ps -aux | grep flume    找到该进程的pid
    # kill pid                          不要kill -9 pid

    2、配置文件

    3、在HDFS上创建event落地的目录
    # hadoop fs -mkdir /flume_hdfs_sink

    4、启动本节点上的flume agent

    # bin/flume-ng agent --conf conf --conf-file ./conf/flume-hdfs.properties --name a1 -Dflume.root.logger=INFO,console

    解读:
    使用conf目录下的flume-hdfs.properties文件,启动agent, agent的名称为a1;
    flume向console打印INFO级别及以上的日志信息

    5. 再开启1个到telnet到Agent所在机器的命令行窗口,连接建立后输入数据,查看flume是否在HDFS目录上生成文件,将event写入
    1) telnet输入

     

    2) Flume输出

     

    HDFS上此时存在临时文件,数据还没有真正写入

    3) telnet多次输入,第11次写入时,HDFS上落地生成新文件(rollCount=10此时满足)

     


    查看HDFS文件的内容
    落地到HDFS文件中的内容,将只保留实际数据,不再是event形式

     

    HDFS Sink的配置项参考(来自flume官网用户手册)

  • 相关阅读:
    写了个批量下载抖音无水印视频的小软件。
    ffmpeg转换参数码
    WPF
    使用EF的Code First模式创建模型
    桌面置顶显示服务器信息
    Assert.assertEquals
    XML报文解析思路
    定时任务,cron七域
    检查网络是否通畅
    Ngnix运行vue项目
  • 原文地址:https://www.cnblogs.com/shay-zhangjin/p/7936384.html
Copyright © 2011-2022 走看看