丢数据数据重复 flume内部有两个事务: Source到Channel是Put事务 doPut:将批数据先写入临时缓冲区 putListdoCommit:检查 channel 内存队列是否足够合并doRollback:channel 内存队列空间不足,回滚数据 Channel到Sink是Take事务 doTake:将数据取到临时缓冲区 takeList,并将数据发送到 HDFSdoCommit:如果数据全部发送成功,则清除临时缓冲区 takeListdoRollback:数据发送过程中如果出现异常, 将临时缓冲区 takeList 中的数据归还给 channel 内存队列 丢数据唯一可能丢数据是采用memory channel, 断电导致数据丢失 数据重复flume可能数据重复:数据已经成功由 Sink 发出, 但是没有接收到响应,Sink 会再次发送数据