full mesh Full me是什么意思_Flume

1、Flume简介

1.1、Flume释义

flume,译作 n.(工业)引水槽,放水沟;(游泳池或游乐园的)水滑道

在Hadoop大数据领域,Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

Flume提供了从console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日志系统),支持TCP和UDP等2种模式),exec(命令执行)等数据源上收集数据的能力。

full mesh Full me是什么意思_Flume_02

1.2、Flume版本历史

版本发布历史:
2012-07-24: 1.1.0-incubating,发布第一个孵化版本
2012-07-26: 1.2.0
2012-12-02: 1.3.0
2013-01-02: 1.3.1
2018-05-04: 1.4.0
不知道官网抽什么疯,2018-05-04这天同时上传了1.5.0/1.5.1/1.5.2/1.6.0/1.7.0/1.8.0版本
2019-01-02: 1.9.0
2019-05-20

2、Flume架构

Flume是用Java编写的。

full mesh Full me是什么意思_Flume_03


Agent(代理)主要有三个组件组成:

  • Source:从数据发生器接收数据,并将接收的数据以Flume的event格式传递给一个或者多个通道channel,Flume提供多种数据接收的方式,比如Avro,Thrift,twitter1%等
  • Channel:是一种短暂的存储容器,它将从source处接收到的event格式的数据缓存起来,直到它们被sinks消费掉,它在source和sink间起着一共桥梁的作用,channal是一个完整的事务,这一点保证了数据在收发的时候的一致性. 并且它可以和任意数量的source和sink链接. 支持的类型有: JDBC channel , File System channel , Memort channel等
  • sink:sink将数据存储到集中存储器比如Hbase和HDFS,它从channals消费数据(events)并将其传递给目标地. 目标地可能是另一个sink,也可能HDFS,HBase

3、Flume应用场景

现在流行的内容推送,比如广告定点投放以及新闻私人定制。

不过类似于Flume的组件还有很多,比如facebook的Scribe,还有Apache新出的另一个明星项目chukwa,还有淘宝Time Tunnel

kafka也可以做日志系统,不过:kafka做日志缓存应该是更为合适的(它是分布式消息中间件,自带存储,提供push和pull存取数据功能);flume的数据采集部分做的很好,可以定制很多数据源,减少开发量。

不过,比较流行flume+kafka模式,如果为了利用flume写hdfs的能力,也可以采用kafka+flume的方式。具体看业务场景了。