• storm基础系列之五---------接入数据收集系统flume


    1.基本结构介绍

      flume是三层架构,agent,collector,storage。每一层都可水平扩展。

      其中,agent就是数据采集方;collector是数据整合方;storage是各种数据落地方,如hdfs。

      前两者都是由source和sink组成,source是数据读取组件,sink是数据分发组件。

      前两者作为不同类型node统一归master管理。可在master shell活web中动态配置。

    2.自带的source

      text 文件,按行发送

      tail 探测新产生数据,安航发送

      fsyslog Tcp(5140) 监听这个端口

      tailDir("dirname"[, fileregex=".*"[, startFromEnd=false[, recurseDepth=0]]]):监听目录中的文件末尾,使用正则去选定需要监听的文件(不包含目录),recurseDepth为递归监听其下子目录的深度

    3.想采集windows服务器上的日志文件,于是,研究了flume怎么在windows下部署。

      • 我用的是flulm1.6版本,直接官网下载(不区分linux还是windows的)解压缩到本地
      • 下载了一个tail工具,用于动态读取日志文件增加的内容。原始下载地址找不到了,我放在自己云盘里:http://pan.baidu.com/s/1nuHt1H3   提取码:ihx2 如果不可用请留言。
      • 使用方法就是直接解压缩,然后把exe文件放到C:/Windows/System32/ 下,验证方式是随便找个txt文件,用tail -f 文件名。可以看到和linux一样的效果。
      • 把flume/conf下的flume-env.sh.template 文件的template后缀去掉,然后在里面加上JAVA_HOME的配置: export JAVA_HOME=D:jdk1.8
      • 创建一个conf文件,exec_tail.conf,里面的内容是关于flume的配置:
        a1.sources = r1
        a1.sinks = k1
        a1.channels = c1
        # Describe/configure the source
        a1.sources.r1.type = exec
        a1.sources.r1.channels = c1
        a1.sources.r1.command = tail -f D:hadoopResouceflumelogslog_exec_tail.txt
        # Describe the sink
        a1.sinks.k1.type = logger
        # Use a channel which buffers events in memory
        a1.channels.c1.type = memory
        a1.channels.c1.capacity = 1000
        a1.channels.c1.transactionCapacity = 100
        # Bind the source and sink to the channel
        a1.sources.r1.channels = c1
        a1.sinks.k1.channel = c1
        

          其实里面需要修改的就是需要采集的文件全路径

      • 我使用了网上推荐的写一堆命令的方式,不过启动了不见效果。于是我采用其他人推荐的,写一个.bat方式。具体内容是:
        set FLUME_HOME=D:hadoopResouceflume
        set JAVA_HOME=D:jdk1.8
        set JAVA="%JAVA_HOME%injava.exe"
        set JAVA_OPTS=-Xmx1024m
        set CONF=%FLUME_HOME%confflume-conf.properties
        set AGENT=agent
        %JAVA%  %JAVA_OPTS% -Dflume.monitoring.type=http -Dflume.monitoring.port=34545 -Dlog4j.configuration=file:\\%FLUME_HOME%conflog4j.properties -cp "%FLUME_HOME%lib*" org.apache.flume.node.Application -f %FLUME_HOME%confflume-conf.properties -n %AGENT%
        

          需要注意的是几处路径的配置

      • 至此,全部准备工作做完,下面在cmd进入flume/bin目录,执行这个.bat文件。
      • 通过http验证下:http://localhost:34545,能看到如下信息:

      { SOURCE.seqGenSrc: { EventReceivedCount: "0", Type: "SOURCE", AppendBatchAcceptedCount: "0", EventAcceptedCount: "2532", AppendReceivedCount: "0", StartTime: "1468487063825", AppendAcceptedCount: "0", OpenConnectionCount: "0", AppendBatchReceivedCount: "0", StopTime: "0" }, CHANNEL.memoryChannel: { ChannelCapacity: "100", ChannelFillPercentage: "99.0", Type: "CHANNEL", EventTakeSuccessCount: "2423", ChannelSize: "99", StartTime: "1468487063801", EventTakeAttemptCount: "2424", EventPutAttemptCount: "2524", EventPutSuccessCount: "2523", StopTime: "0" } }

    4.读取目录新增加文件内容的配置

    a1.sources.r1.type = spooldir
    a1.sources.r1.channels = c1
    a1.sources.r1.spoolDir = /home/master/yang/flume/logs
    a1.sources.r1.fileHeader = true
    

      

    5.写入kafka的配置

      这里踩的坑较多,一种可能是老版本配置,还有一种就是有的人没经过试验的东西就贴出来了。引以为戒,自己测试通过再贴,保持严谨,免得误人。

    //看好类全路径是否都对,网上有不靠谱的写法,org.apache.flume.plugins.SinglePartition 令人鄙视
    a1.sinks.k1.type =  org.apache.flume.sink.kafka.KafkaSink
    //不知道为什么很多人这里项写为:a1.sinks.k1.metadata.broker.list,可能是之前版本有这个吧
    a1.sinks.k1.brokerList =master:9092,slave1:9092,slave2:9092
    a1.sinks.k1.serializer.class=kafka.serializer.StringEncoder
    //还有这玩意,这写法太坑人了a1.sinks.k1.custom.topic.name
    a1.sinks.k1.topic=kafka-storm-cluster
    a1.sinks.k1.channel=c1
    

    6.读取telnet监控内容配置sink

    a1.sources.r1.type= netcat  
    a1.sources.r1.bind= localhost
    a1.sources.r1.port= 44444 
    

      

    7.常用命令:

    启动: bin/flume-ng agent  -c ./conf/ -f conf/spool.conf -Dflume.root.logger=DEBUG,console -n a1

  • 相关阅读:
    从学算法体会如何更好的学习
    java数据结构与算法
    数据结构与算法资料汇总
    Oracle元数据查询总结
    Antlr词法分析之技巧——修改某个token
    动态规划公共子序列
    k8s笔记
    MiniDao1.9.0 版本发布,轻量级Java持久化框架
    autpoi 1.4.3版本发布—Excel傻瓜式API,快速实现Excel导入导出、Word模板导出
    喜讯!喜讯!JeecgBoot Github超 30000 Star—这个低代码平台你还不知道吗?
  • 原文地址:https://www.cnblogs.com/xyang/p/5667956.html
Copyright © 2020-2023  润新知