前言
本文主要介绍了Flume的功能用途和核心概念,是一个对Flume是什么、能干什么的快速入门介绍,来自《企业大数据处理:Spark、Druid、Flume与Kafka应用实践》读书笔记。
Flume介绍
Flume是cloudera公司开发的分布式、高可用的日志收集系统,是Hadoop生态圈内的关键组件之一,目前已开源给apache。Flume原始版本为Flume-OG,经过对整体架构的重新设计,已改名为Flume-NG。Flume发展到现在已经不仅限于日志收集,还可以通过简单的配置收集不同数据源的海量数据并将数据准确高效地传输到不同的中心存储。目前Flume可对接的主流大数据框架有Hadoop、Kafka、ElasticSearch、Hive、HBase等。在使用Flume的过程中,通过配置文件可以实现整个数据收集过程的负载均衡和故障转移,整个流程不需要修改Flume的任何代码。Flume具有上述的诸多特性得益于优秀的框架设计,Flume通过可扩展、插件化、组合式、高可用、高容错的设计模式,为用户提供了简单、高效、准确的轻量化大数据采集工具。
基本架构
Flume-NG采用三层架构设计:收集(Source)、暂存(Channel)、处理(Sink),如图所示。
一个event在一个agent中的传输流程如图所示,传输顺序为:Source→Interceptor→Selector→Channel→Sink Processor→Sink→中心存储/下一级agent
核心概念
- Event:一条消息或者说是一条数据,具有可选头信息,在头信息中可以设置时间戳、主机名称等信息。
- Source:数据源,接收或者收集不同形式的数据源。
- Channel:event的临时缓冲区,source先将event发送到chanel缓存等待sink消费。
- Sink:从channel获取event并发送到中心存储或者下一级agent。
- Agent:包含source、channel、sink等组件的flume进程。
- Interceptor:event拦截器,根据配置文件在event的header中添加时间戳、主机名称等信息。
- Selector:event选择器,event选择流入channel的方式,flume提供了复制(replicating)和复用(multiplexing)选择器。
- Sink Processor:event sink处理器,flume提供了故障转移处理器和负载均衡处理器。