官方网站链接:http://flume.apache.org/
简介
Flume是一个分布式、高可靠、高可用的日志收集系统,它能够将不同数据源的海量日志数据进行高效收集、聚合、移动,最后存储到一个中心化的数据存储系统中。
Flume架构整体上看就是 SourceChannelSink 的三层架构,类似生产者和消费者的架构,他们之间通过队列(Channel)传输、解耦。
应用场景
Flume被设计用来传输、提取定期生成的数据的,数据源是可定制的,几乎任何数据源都有可能,数据文件可以是日志、文本或图片文件等,例如,海量日志、网络的业务数据、社交媒体产生的数据、电子邮件等数据的采集、聚合和传输。Flume中传输的数据是不断生成、流式的。
功能特性
高可靠性
Flume的核心是把数据从数据源收集过来,再送到目的地。为了保证输送一定成功,在送到目的地之前,会先缓存数据,待数据真正到达目的地后,删除自己缓存的数据。当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,所有的数据以event为单位传输,从强到弱依次分别为:End-to-end(收到数据先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送),Store on failure(当数据接收方crash时,将数据写到本地,待恢复后,继续发送),Best effort(数据发送到接收方后,不会进行确认)。
可恢复性
Flume依靠Channel实现数据可恢复性。如使用FileChannel,事件持久化在本地文件系统里。
功能可扩展性
Flume支持可扩展架构,用户可以根据需要添加个性化的Source,Channel或者Sink。此外,Flume自带了很多组件,包括各种Source(Avro、Spooling Directory等)、Sink(HBase、HDFS、Kafka等)。
可管理性
Flume的所有Agent和Colletor由Master统一管理,这使得系统便于维护。在多Master情况下,会保证动态配置数据的一致性。用户可以在Master上查看各个数据源或者数据流执行情况,且可以对各个数据源配置和动态加载。Flume提供了Web和Shell客户端两种形式对数据流进行管理。
增强的HDFS Sink
HDFS Sink中默认的Serializer会每写一行在行尾添加一个换行符,通常日志本身带有换行符,这样会导致每条日志后面多一个空行,通过配置调整使其
自动增加换行符,增加HDFS Sink吞吐量,减少HDFS的Flush次数。