flume流程
flume的整体流程如下
可为什么flume具有高可靠性的,原因是它在source传输给Channel和Channel传输给Sink两部中都采用了事务的方法,如果出现问题可以rollback重新读取数据
以下为详细图解:
读懂这张图首先要介绍一下flume流程中的传输单位:Eventn,也就是事件
flume的数据流由事件(Event)贯穿始终。事件是Flume的基本数据单位,它携带日志数据(字节数组形式)并且结构为头信息(header)和消息体(body),这些Event由Agent外部的Source生成。整个put流程和Take分别是两个事务,当数据传输失败后会分别回滚put流程或者take流程,如果想要数据的安全性,则:
1.source需要有断电续传的能力,这样在put流程出问题回滚后,依然保证数据不丢失
2.Channel的选择上必须要落盘,否则出现整个agent挂掉的情况,即使回滚依然有可能丢失数据
注:put和take都是主动的动作,两个动作中channel都扮演着被动的形象
内部原理
不用纠结于内部原理和流程的交接处,流程就是flume的一套流程,原理就是原