Flume File Channel

Flume File Channel

昨天用Flume采集kafka中的数据到HDFS上,今天才发现Flume采集丢数据了。
于是又回顾了一下这个问题:
Flume采集数据会丢失吗?(防止数据丢失的机制)

  • 根据Flume的架构原理,Flume是不可能丢失数据的,其内部有完善的事物机制,Source到Channel是Put事务,Channel到Sink是Take事务,因此这两个环节不会出现数据的丢失。
  • 如果Channel采用FileChannel不会丢失,Channel存储可以存储在File中,数据传输自身有事务。
  • 如果Channel采用MemoryChannel有可能会丢数据,agent宕机会导致数据丢失,或者Channel存储数据已满,导致Source不再写入,未写入的数据丢失。

而我正正是使用了MemoryChannel,所以才导致数据丢失的。
今天来学习一下FileChannel吧。

属性默认值说明
type-组件类型,这个是:file
checkpointDir~/.flume/file-channel/checkpoint记录检查点的文件的存储目录
checkpointInterval30000检查点的时间间隔(毫秒)
useDualCheckpointsfalse是否备份检查点目录(默认是false)
backupCheckpointDir-备份检查点的目录(不能与数据目录和检查点目录相同)
dataDirs~/.flume/file-channel/data逗号分隔的数据目录列表,用于存储数据文件( dataDirs 配置多个不同盘下的目录可以提高File Channel的性能。)
transactionCapacity10000channel支持的单个事务最大容量
capacity1000000channel的最大容量
maxFileSize2146435071(≈2047MB)单个日志文件的最大字节数
minimumRequiredSpace524288000最小空闲空间的字节数。为了避免数据损坏,当空闲空间低于这个值的时候,file channel将拒绝一切存取请求
keep-alive3存入Event的最大等待时间(秒)

检查点目录(checkpointDir)

  • 在File Channel中,有一个内存队列用来保存已被Source写入但还未被Sink消费的Event数据的指针,Event指针指向的就是Event在数据目录下的数据文件中的存放位置。
  • 所以检查点指的就是内存队列在某一稳定时刻的“快照”,而且每隔一段时间(checkpointInterval)File Channel会将内存队列持久化到磁盘文件,也就是我们配置的检查点目录下。
  • 为了保证内存队列“快照”的完整性,在将内存队列持久到磁盘文件时需要锁定内存队列,也就是说,在这个过程中 Source不能将Event写入到Channel中,并且Sink也不能从Channel中拉取Event。(总之,既不能读也不能写)
  • backupCheckpointDir就是检查点目录的备份目录,因为检查点文件是经常读写的,很容易导致文件损坏。
    参考链接:flume之Channel
  • 如果一个Agent中有多个File Channel实例,而且都是使用了默认的检查点目录checkpointDir或者是设置了同样的检查点目录,则只有一个实例可以锁定目录并导致其它Channel初始化失败。所以,我们应该为所有的File Channel显式配置不同的检查点目录,最好是在不同的磁盘上。
#表示a1的channel类型是file文件型
a1.channels.c1.type = file
#设置检查点目录
a1.channels.c1.checkpointDir = /opt/module/flume-1.9.0/jobs/douban_movies/checkpoint
#设置数据目录
a1.channels.c1.dataDirs = /opt/module/flume-1.9.0/jobs/douban_movies/data
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值