Flume 概述和基本架构

Flume是一个由Cloudera开发的分布式日志聚合工具,现已成为通用的流数据收集系统。它由Source、Channel和Sink组成,用于接收、存储和转发大量日志数据。FlumeNG是其后续改进版,去除了中心化组件,增强了稳定性和扩展性。该系统具有高度定制化和良好的可靠性,支持多种数据源和目的地,如HDFS、HBase、Solr等。
摘要由CSDN通过智能技术生成

一,flume是什么? 

        flume是一个分布式,可靠且高可用的服务,用于有效的接受,聚合,转移大量日志数据,flume具有基于流数据的简单灵活架构,良好的高可靠机制,故障转移和恢复机制,具有了强大的容错性。flume支持在系统中定制各种数据接受方,用于收集数据。同时,flume提供对数据进行简单处理,并写入各种数据接收方的能力。

二,Flume 发展历程

Flume 最初是 Cloudera 开发的日志收集系统,受到了业界的认可与广泛应用,后来逐步演化成支持任何流式数据收集的通用系统。

Flume 目前存在两个版本:Flume OG(Original generation) 和 Flume NG (Next/New generation)。

其中 Flume OG 对应的是 Apache Flume 0.9.x 之前的版本,早期随着 FLume 功能的扩展,Flume OG 代码工程臃肿、核心组件设计不合理、核心配置不标准等缺点暴露出来,尤其是在 Flume OG 的最后一个发行版本 0.9.4. 中,日志传输不稳定的现象尤为严重,为了解决这些问题,2011 年 10 月 22 号,Cloudera 完成了 Flume-728,对 Flume 进行了里程碑式的改动,重构后的版本统称为 Flume NG(next generation)。同时此次改动后,Flume 也纳入了 apache 旗下。

Flume NG 在 OG的架构基础上做了调整,去掉了中心化组件 master 以及服务协调组件 Zookeeper,使得架构更加简单和容易部署。Flume NG 和 OG 是完全不兼容的,但沿袭了 OG 中的很多概念,包括Source,Sink等。

三,flume基本思想及特点

基本思想:flume采用插拔式软件架构,所有组件都是可插拔的,用户可以根据自己的需求定制各                    种组件,flume的本质是中间件

特点:  1. 良好的扩展性;Flume 的架构是完全分布式的,没有任何中心化组件,使得其非常容易               扩展。

             2. 高度定制化;采用插拔式架构,各组件插拔式配置,用户可以很容易的根据需求自由                   定义。

             3. 良好的可靠性;Flume 内置了事务支持,能保证发送的每条数据能够被下一跳收到而                 不丢失。

             4. 可恢复性;依赖于其核心组件channel,选择缓存类型为FileChannel,事件可持久化到                 本地文件系统中。

四· ,flume的基本架构

1 Agent

Agent是一个JVM进程,它以事件的形式将数据从源头送至目的,是Flume数据传输的基本单元。  相当于一个job  mapreduce  

Agent主要有3个部分组成,Source、Channel、Sink。

1.2.2 Source

Source是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy。

source :收集的数据源:

exec:  日志文件。

spooling directory :目录

netcat : ip:port  网络请求来源

avro  : 上一个flume的sink下沉的数据。

1.2.3 Channel

Channel是位于Source和Sink之间的缓冲区。因此,Channel允许Source和Sink运作在不同的速率上。Channel是线程安全(线程队列)的,可以同时处理几个Source的写入操作和几个Sink的读取操作。

Flume自带两种Channel:Memory Channel和File Channel。

Memory Channel是内存中的队列。Memory Channel在不需要关心数据丢失的情景下适用。如果需要关心数据丢失,那么Memory Channel就不应该使用,因为程序死亡、机器宕机或者重启都会导致数据丢失。

File Channel将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据。

1.2.4 Sink

Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统Hbase、或者被发送到另一个Flume Agent。

Sink是完全事务性的。在从Channel批量删除数据之前,每个Sink用Channel启动一个事务。批量事件一旦成功写出到存储系统或下一个Flume Agent,Sink就利用Channel提交事务。事务一旦被提交,该Channel从自己的内部缓冲区删除事件event。

Sink组件目的地包括hdfs、logger、avro、thrift、ipc、file、null、HBase、solr、kafka自定义。

1.2.5 Event

传输单元,Flume数据传输的基本单元,以事件的形式将数据从源头送至目的地。

agent; 事件:每运行一个flume,就会开启一个agent.

source: 数据源

channel: 传输管道

sink: 下沉

event: 数据基本单元

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值