Source到Channel是事务性的,
Channel到Sink也是事务性的,
这两个环节都不可能丢失数据。
唯一可能丢失数据的是Channel采用MemoryChannel,
(1)在agent宕机时候导致数据在内存中丢失;
(2)Channel存储数据已满,导致Source不再写入数据,造成未写入的数据丢失;
flume传输是否会丢失或重复数据?
这个问题需要分情况来看,需要结合具体使用的source、channel和sink来分析。
首先,分析source:
(1)exec source ,后面接 tail -f ,这个数据也是有可能丢的。
(2)TailDir source ,这个是不会丢数据的,它可以保证数据不丢失。
其次,分析sink:
(1)hdfs/kakfa sink,数据有可能重复,但是不会丢失。
一般生产过程中,都是使用 **TailDir source **和 HDFS sink,所以数据会重复但是不会丢失。
最后,分析channel
要想数据不丢失的话,还是要用 File channel,而memory channel 在flume挂掉的时候还是有可能造成数据的丢失的。