简介
Flume是一种分布式的、可靠的、可用的服务,用于有效地收集、聚合和移动大量的日志数据。它具有简单灵活基于流数据的架构,采用了许多故障转移和恢复机制来保证可靠性。
架构
-
Source
Source是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy。 -
Channel
Channel是位于Source和Sink之间的缓冲区。因此,Channel允许Source和Sink运作在不同的速率上。Channel是线程安全的,可以同时处理几个Source的写入操作和几个Sink的读取操作。
Flume有两种Channel:Memory Channel和File Channel。
Memory Channel将数据缓存在内存中,当程序宕机或者重启时缓存中的数据会丢失。
File Channel将所有数据写到磁盘。因此在程序重启或机器宕机的情况下不会丢失数据。 -
Sink
Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到目的存储或发送到另一个Flume Agent。
Sink组件目的地包括hdfs、logger、avro、thrift、ipc、file、HBase、solr。
Flume事务
为了保证数据的可靠性,Flume内部使用两个独立的事务(Put事务和Take事务)分别负责从soucrce到channel,以及从channel到sink的事件传递。
数据流向
Flume的每一条消息都被封装成Event的形式处理,下图是Event的处理流程。
来源:CSDN
作者:苍老流年
链接:https://blog.csdn.net/cl2010abc/article/details/103555651