定义
Flume是一个分布式,可扩展,可靠,高可用的服务。用于有效地收集,聚合和移动大量日志数据。
它具有基于流数据流的简单灵活的架构。
它具有可靠的可靠性机制和许多故障转移和恢复机制,具有强大的容错能力。
其设计宗旨是向Hadoop批量导入基于事件的海量数据
发展
Flume原始版本为Flume-OG,经过对整体架构的重新设计,已改名为Flume-NG
Flume发展到现在已经不仅限于日志采集,还可以通过简单的配置收集不同数据源的海量数据并将数据准确高效地传输到不同的中心存储。目前Flume可以对接的主流大数据框架有Hadoop、Kafka、ElasticSearch、Hive、HBase等
Flume基本架构(FLume-NG)
flume三个组件:[Source(数据源)、Channel(通道)、Sink(接收器)]==Agent(代理)
Flume的工作流程
flume中数据的传输体现在event的传输。一个event在一个agent中的传输流程也就体现了flume的工作流程。
Source–>Interceptor(可选)---->Selector---->Channel---->Sink Processor---->Sink---->存储中心/下一个Agent
Source是数据的收集端,负责将数据捕获后进行特殊的格式化,将数据封装到事件(event) 里,然后将事件推入Channel中。 Flume提供了很多内置的Source, 支持 Avro, log4j, syslog 和 http post(body为json格式)。
Channel是连接Source和Sink的组件,可以将它看做一个数据的缓冲区(数据队列),它可以将事件暂存到内存中也可以持久化到本地磁盘上, 直到Sink处理完该事件。
Sink从Channel中取出事件,然后将数据发到别处,可以向文件系统、数据库、 hadoop存数据, 也可以是其他agent的Source
Flume的工作原理
从设置角度讲,Flume是一个灵活的分布式系统,提供多种不同来源高效收集、聚合和传送大量数据到集中式数据存储的可靠且可扩展的方式。
以下是关键概念:
- 客户端(client)