Flume的简介
大数据处理流程
在企业中,大数据的处理流程一般是:
- 1.数据采集
- 2.数据存储
- 3.数据清洗
- 4.数据分析
- 5.数据展示
参考下图:
在数据采集和搜集的工具中,Flume框架占有一定的市场份量。
Flume的简介
Flume是一种分布式的,可靠的、高可用的服务,用于有效地收集,聚合和移动大量日志数据。它具有基于流数据流的简单灵活的体系结构。它具有可调整的可靠性机制以及许多故障转移和恢复机制,具有强大的功能和容错能力。它使用一个简单的可扩展数据模型,允许在线分析应用程序。
参考官网: http://flume.apache.org/
Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. It has a simple and flexible architecture based on streaming data flows. It is robust and fault tolerant with tunable reliability mechanisms and many failover and recovery mechanisms. It uses a simple extensible data model that allows for online analytic application.
Flume最开始是由 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用。但随着 Flume功能的扩展,flume的代码工程臃肿、核心组件设计不合理、核心配置不标准等缺点渐渐暴露出来,尤其是在发行版本 0.9.4中,日志传输不稳定的现象尤为严重。
为了解决这些问题,2011 年 10 月 22 号,cloudera 对 Flume进行了里程碑式的改动:重构核心组件、核心配置以及代码架构,并将 Flume纳入 apache 旗下,从cloudera Flume改名为 Apache Flume。
版本区别
为了与之前版本区分开,重构后的版本统称为 FlumeNG(next generation),重构前的版本被统称为 FlumeOG(original generation),Flume目前只有Linux系统的启动脚本,没有Windows环境的启动脚本。
Flume的体系结构
体系结构简介
Flume运行的核心是 Agent。Flume是以agent为最小的独立运行单位。一个agent就是一个JVM。它是一个完整的数据收集工具,含有三个核心组件,分别是source、 channel、 sink。通过这些组件, Event 可以从一个地方流向另一个地方。如下图所示:
组件及其作用
- Client:
客户端,Client生产数据,运行在一个独立的线程中
- Event:
一个数据单元,消息头和消息体组成。(Events可以是日志记录、 avro 对象等。)
- Flow:
Event从源点到达目的点的迁移的抽象。
- Agent:
一个独立的Flume进程,运行在JVM中,包含组件Source、 Channel、 Sink。
每台机器运行一个agent,但是一个agent中可以包含多个sources和sinks。
- Source:
数据收集组件。source从Client收集数据,传递给Channel
- Channel:
管道,负责接收source端的数据,然后将数据推送到sink端。
- Sink:
负责从channel端拉取数据,并将其推送到持久化系统或者是下一个Agent。
- selector:
选择器,作用于source端,然后决定数据发往哪个目标。
- interceptor:
拦截器,flume允许使用拦截器拦截数据。允许使用拦截器链,作用于source和sink阶段。