apacheflume hdfs sink文件写入的保证是什么?

tsm1rwdh  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(272)

如果flume代理在hdfs文件写入过程中被杀死(比如使用avro格式),有人能解释一下会发生什么吗?文件是否会被损坏,并且所有事件都会丢失?
我知道flume数据链的不同元素之间存在事务(source->channel->sink)。但我相信hdfs文件可能在连续的channel->sink事务之间保持打开状态(如.tmp)。因此,如果一个事务(比如100个事件)成功(这些事件存储在一个文件中,事务已提交),而下一个事务在hdfs写入过程中失败,那么第一个事务中最初的100个事件是否不可读(例如,因为文件已损坏?)。为什么flume可以保证第一个事务中最初的100个事件不受这种类型的失败的影响?或者可能没有保证?

pkwftd7m

pkwftd7m1#

如果flume代理在hdfs文件写入过程中被杀死,那么文件就不会损坏,也不会丢失数据。
如果flume代理被杀死时flume正在写入文件flumedata123456789.tmp,则在该点之前写入该文件的所有记录将保持完整,并且该文件将保存为flumedata123456789。

相关问题