flume的数据采集的相关知识和配置

Flume是一个用于高效、可靠地收集、聚合和移动大量日志数据的工具。它包括agent、source、channel和sink等组件,event是其数据传输的基本单元。在使用时,需要配置agent,例如创建netcat-logger.properties文件,并指定JAVA_HOME路径。通过telnet测试,可以检查数据接收情况。使用spooldir source可以监测文件夹,但只收集新增文件,不处理已收集或完成的文件。配置适当的参数,Flume还能将数据采集到HDFS。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flume的相关知识

  1. 产生背景:因为各种数据的格式不能统一,所以flume采集工具就产生了。比如csv,tsv,json,压缩数据等等

  2. flume的组件:

    1. agent 用户代理 source获取数据包装成的数据就是events channel处理数据 sink存储数据
    2. event是flume数据传输的基本单元
  3. 完成数据收集需要在使用端有一个agent

  4. flume的安装

    1. 下载安装包 下载地址

    2. 配置相关信息 /conf下的flume-env.sh 添加JAVA_HOME的路径

    3. 在$FLUME_HOME下创建agentconf文件夹

    4. 进入agentconf创建文件netcat-logger.properties

       #定义这个agent中各个组件的名字 a1就是agent的名字
       a1.sources = r1
       a1.sinks = k1
       a1.channels = c1			
       # 描述和配置source组件r1
       a1.sources.r1.type = netcat
       a1.sources.r1.bind = localhost
       a1.sources.r1.port = 44444			
       # 描述和配置sink组件
       a1.sinks.k1.type = logger			
       # 描述和配置channel组件此处使用的是内存缓存的方式
       a1.channels.c1.type = memory
       a1.channels.c1.capacity = 1000
       a1.channels.c1.transactionCapacity = 100			
       #描述和配置source channel sink之间的连接关系
       a1.sources.r1.channels = c1
       a1.sinks.k1.channel = c1
      
    5. 启动命令 bin/flume-ng agent -c conf -f agentconf/netcat-logger.properties -n a1 -Dflume.root.logger=INFO,console

    6. 相同的节点 输入 telnet localhost 44444进行测试 查看是否可以接收到数据

  5. 采集目录到hdfs监测文件夹
    - spooldir是用来检测文件夹的
    - 只有新增文件了才会监听到否则不会被收集,即使是你修改了已经收集完成的文件也不会被再次收集。
    - 如果你添加的文件格式是.COMPLETED也不会被收集
    - 配置信息

    #定义这个agent中各个组件的名字
    agent1.sources = source1
    agent1.sinks = sink1
    agent1.channels = channel1				
    # 描述和配置source组件r1
    agent1.sources.source1.type = spooldir
    agent1.sources.source1.spoolDir = /home/hadoop/testlog/
    agent1.sources.source1.fileHeader = false				
    #配置拦截器
    agent1.sources.source1.interceptors=i1
    agent1.sources.source1.interceptors.i1.type=host
    agent1.sources.source1.interceptors.i1.hostHeader=hostname
    # 描述和配置sink组件
    agent1.sinks.sink1.type = hdfs
    agent1.sinks.sink1.hdfs.path=hdfs://hadoop:9000/my_flume/%y-%m-%d/%H-%M
    agent1.sinks.sink1.hdfs.filePrefix=events
    agent1.sinks.sink1.hdfs.maxOpenFiles=5000
    agent1.sinks.sink1.hdfs.batchSize=100
    agent1.sinks.sink1.hdfs.fileType=DataStream
    agent1.sinks.sink1.hdfs.writeFormat=Text
    agent1.sinks.sink1.hdfs.rollSize=102400
    agent1.sinks.sink1.hdfs.rollCount=1000000
    agent1.sinks.sink1.hdfs.rollInterval=60
    agent1.sinks.sink1.hdfs.round=true
    agent1.sinks.sink1.hdfs.roundValue=10
    agent1.sinks.sink1.hdfs.roundUnit=minute
    agent1.sinks.sink1.hdfs.useLocalTimeStamp=true				
    # 描述和配置channel组件此处使用的是内存缓存的方式
    agent1.channels.channel1.type = memory
    agent1.channels.channel1.keep-alive=120
    agent1.channels.channel1.capacity=500000
    agent1.channels.channel1.transactionCapacity=600				
    #描述和配置source channel sink之间的连接关系
    agent1.sources.source1.channels =channel1
    agent1.sinks.sink1.channel =channel1
    
  • 启动命令

        bin/flume-ng agent -c conf -f agentconf/spooldir-hdfs.properties -n agent1 
        -Dflume.root.logger=INFO,console
    
  • 收集文件的数据并采集到hdfs

    • 配置信息

      	#定义这个agent中各个组件的名字
         agent1.sources = source1
         agent1.sinks = sink1
          agent1.channels = channel1				
          # 描述和配置source组件r1
          agent1.sources.source1.type = exec
          agent1.sources.source1.command=tail -f /home/hadoop/catalina.out
          agent1.sources.source1.channels=channel1				
          #配置拦截器
          agent1.sources.source1.interceptors=i1
          agent1.sources.source1.interceptors.i1.type=host
          agent1.sources.source1.interceptors.i1.hostHeader=hostname								
          # 描述和配置sink组件
          agent1.sinks.sink1.type = hdfs
          agent1.sinks.sink1.hdfs.path=hdfs://hadoop:9000/my_flume/%y-%m-%d/%H-%M
          agent1.sinks.sink1.hdfs.filePrefix=tomcat_
          agent1.sinks.sink1.hdfs.maxOpenFiles=5000
          agent1.sinks.sink1.hdfs.batchSize=100
          agent1.sinks.sink1.hdfs.fileType=DataStream
          agent1.sinks.sink1.hdfs.writeFormat=Text
          agent1.sinks.sink1.hdfs.rollSize=102400
          agent1.sinks.sink1.hdfs.rollCount=1000000
          agent1.sinks.sink1.hdfs.rollInterval=60
          agent1.sinks.sink1.hdfs.round=true
          agent1.sinks.sink1.hdfs.roundValue=10
          agent1.sinks.sink1.hdfs.roundUnit=minute
          agent1.sinks.sink1.hdfs.useLocalTimeStamp=true				
          # 描述和配置channel组件此处使用的是内存缓存的方式
          agent1.channels.channel1.type = memory
          agent1.channels.channel1.keep-alive=120
          agent1.channels.channel1.capacity=500000
          agent1.channels.channel1.transactionCapacity=600								
          #描述和配置source channel sink之间的连接关系
          agent1.sources.source1.channels =channel1
          agent1.sinks.sink1.channel =channel1
      
    • 启动命令

        bin/flume-ng agent -c conf -f agentconf/taildir-hdfs.properties -n agent1 
        -Dflume.root.logger=INFO,console
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值