Flume之Spooling Directory的Source

使用场景

此种source类型的使用场景,通常用于某些业务需要在24小时之后处理数据或数据会固定的形成一个文件传输到某文件夹中的业务场景所使用的source类型。

实例:监听一个文件夹

配置说明

配置项描述
channels缓存区
type需要指定为"spooldir"
spoolDir指定文件夹

实现步骤:

  1. 配置信息:job路径下创建spooldir.logger.conf并做如下配置
a1.sources=r1
a1.channels=c1
a1.sinks=s1
# 描述/配置a1的source
a1.sources.r1.type=spooldir
a1.sources.r1.spoolDir=/home/data #注: spoolDir必须严格区分大小写,否则会报错,提示找不到目录。
# 描述/配置a1的channel
a1.channels.c1.type=memory
# 描述/配置a1的sink
a1.sinks.s1.type=logger
# 绑定
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1

在启动之前需要先确保相关的目录(/home/data)存在,若目录不存在,则启动报错。
在这里插入图片描述

  1. 启动flume:./bin/flume-ng agent -n a1 -c ./conf/ -f ./job/spooldir.logger.conf -Dflume.root.logger=INFO,console
    在这里插入图片描述
    在这里插入图片描述

  2. 打开另一台虚拟机远程登录登录 (ssh test) flume的虚拟机拷贝问价到/home/data下:cp test.txt /home/

在这里插入图片描述

  1. 查看测试结果
    在这里插入图片描述
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Flume的Spooling Directory Source是用于监控指定目录并将新的文件内容作为事件发送到Flume流程中的组件。要实现抓取文件后自动停止,可以使用Flume的File Channel组件和Flume的Exec Source组件。 具体实现步骤如下: 1. 配置Spooling Directory Source,将文件内容发送到File Channel中。 ```properties #定义agent agent.sources = spoolDirSource agent.channels = fileChannel agent.sinks = nullSink #定义source agent.sources.spoolDirSource.type = spooldir agent.sources.spoolDirSource.spoolDir = /data/spool agent.sources.spoolDirSource.fileHeader = true agent.sources.spoolDirSource.basenameHeader = true agent.sources.spoolDirSource.batchSize = 1000 agent.sources.spoolDirSource.pollDelay = 10000 agent.sources.spoolDirSource.channels = fileChannel #定义channel agent.channels.fileChannel.type = file agent.channels.fileChannel.checkpointDir = /data/flume/checkpoint agent.channels.fileChannel.dataDirs = /data/flume/data agent.channels.fileChannel.capacity = 10000000 agent.channels.fileChannel.transactionCapacity = 1000 #定义sink agent.sinks.nullSink.type = null agent.sinks.nullSink.channel = fileChannel ``` 2. 配置Exec Source,使用Exec Source来实现自动停止。 ```properties #定义agent agent.sources = execSource agent.channels = fileChannel agent.sinks = nullSink #定义source agent.sources.execSource.type = exec agent.sources.execSource.command = sh /data/stop_flume.sh agent.sources.execSource.batchSize = 1 agent.sources.execSource.channels = fileChannel #定义channel agent.channels.fileChannel.type = file agent.channels.fileChannel.checkpointDir = /data/flume/checkpoint agent.channels.fileChannel.dataDirs = /data/flume/data agent.channels.fileChannel.capacity = 10000000 agent.channels.fileChannel.transactionCapacity = 1000 #定义sink agent.sinks.nullSink.type = null agent.sinks.nullSink.channel = fileChannel ``` 3. 编写停止脚本stop_flume.sh,当该脚本被执行时,Exec Source会接收到一个事件并停止Flume。 ```shell #!/bin/bash touch /data/stop_flume ``` 4. 在Flume的启动脚本中,添加一个循环来监控停止标志文件的变化情况。当停止标志文件被创建时,停止Flume。 ```shell #!/bin/bash bin/flume-ng agent -n agent -c conf -f conf/flume-conf.properties & PID=$! while [ ! -f /data/stop_flume ] do sleep 1 done kill $PID ``` 这样,当停止标志文件被创建时,Exec Source会接收到一个事件并停止Flume。同时,File Channel中的所有事件都会被处理完毕。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

缘不易

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值