版权申明:转载请注明出处。
文章来源:大数据随笔
1.简介
flume是一个分布式、高可用的系统,它用来收集,合并,移动不同来源的大量数据到一个指定的存储。它不仅限于处理文本类的日志数据,还能处理社交媒体数据,二进制数据以及邮件信息等几乎所有的数据格式。
2.架构
(1)flume source消费来自于外部传递给它的event,外部的来源常见的有web server产生的log日志,或者avro,thrift等rpc系统产生的event。当source收到一个event的时候会存入一个或者多个channnel,channel被动的存储数据直到它被sink消耗。
(2)flume允许用户构建一个多节点的流,这样数据在到达终目的地之前会经过多个agent处理,即sink产出的数据可以被另外一个agent的source接收,所以多个agent可以形成一个拓扑结构。
(3)同一个agent中source,channel,sink是异步执行的。
3.可靠性
在每个agent中,event阶段性的存储在channel中,当event成功的存入了下个agent的channel或者到达终的存储channel中的event才会删除。
flume采用事务的方式可靠的传输event,source和sink分别封装了event的存储/还原到channel提供的事务中。这能确保一组event可靠的通过点对点传输。在多节点流中,前一个节点的sink和后一个节点的source之间通过事务保证数据的正常传输。
4.可恢复性
channel在一定程度上支持故障恢复,当使用本地的file作为channel时,因为是持久化存储,它可以恢复。但是当使用memory作为channel时当agent的进程挂掉后存在于channel中的event就无法恢复。