flume数据不会丢失?

工作中推荐

        Spooling Directory Source

配置:

vi /home/hadoop/app/apache-flume-1.6.0-cdh5.16.2-bin/config/flume-spooling.conf
a1.sources = r1
a1.sinks = k1
a1.channels = c1

a1.sources.r1.type = TAILDIR
a1.sources.r1.channels = c1
a1.sources.r1.positionFile = /home/hadoop/tmp/position/taildir_position.json
a1.sources.r1.filegroups = f1 f2
a1.sources.r1.filegroups.f1 = /home/hadoop/tmp/flume/test1/example.log
a1.sources.r1.headers.f1.headerKey1 = value1

a1.sources.r1.filegroups.f2 = /home/hadoop/tmp/flume/test2/.*log.*
a1.sources.r1.headers.f2.headerKey1 = value2
a1.sources.r1.headers.f2.headerKey2 = value2-2
a1.sources.r1.fileHeader = true

# 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

注意:这个并没有进入文件系统,注意看配置logger

配置好可以启动了

flume-ng agent --conf $FLUME_HOME/conf --conf-file $FLUME_HOME/config/taildir-memory-logger.conf --name a1 -Dflume.root.logger=INFO,console

启动完成后,在切换一个连接窗口,创建相应文件夹及文件/home/hadoop/tmp/flume/test1/example.log和/home/hadoop/tmp/flume/test2/

以下操作主要针对数据不丢失做的案例:

第一步:进入到你刚创建的文件夹

[hadoop@hadoop000 ~]$cd /home/hadoop/tmp/flume/test1/

[hadoop@hadoop000 test1]$ echo 111 >> example.log

[hadoop@hadoop000 test1]$ echo 222 >> example.log

[hadoop@hadoop000 test1]$cd /home/hadoop/tmp/flume/test2/

[hadoop@hadoop000 test2]$ echo aaa >> 1.log

之后去刚刚启动flume的那个窗口,看下输出日志,可以显示出你刚刚输入的内容。

第二步:关掉flume,ctrl+z,并没彻底关闭,jps找到相对于进程kill -9掉。
 

[hadoop@hadoop000 test1]$ echo 333>> example.log

[hadoop@hadoop000 test1]$ echo 444>> example.log

[hadoop@hadoop000 test1]$cd /home/hadoop/tmp/flume/test2/

[hadoop@hadoop000 test2]$ echo bbb>> 1.log

第三步:启动fume 

flume-ng agent --conf $FLUME_HOME/conf --conf-file $FLUME_HOME/config/taildir-memory-logger.conf --name a1 -Dflume.root.logger=INFO,console

根据启动日志可以发现,刚关闭flume后输入的信息,现在又同步进来了,说明就算flume挂掉,数据也不存在丢失问题。

 

总结:为什么会这样呢?

我们通过配置可以发现,他有一个a1.sources.r1.positionFile参数,相当于flume是通过偏移量进行数据消费的,所以就算flume挂掉,之后一直往flume监控的文件夹下写数据,也没事,

当flume重新启动的时候,会读取配置文件中存放偏移量那个json文件,会按照挂掉当时的偏移量进行往下读取数据。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值