Flume介绍和常见应用场景

目录

 

一、什么是Flume?

二、安装

三、Flume目录结构

四、Flume Agent组件

(1)Source

(2)channel

(3)sink

五、Flume有哪些优缺点

(1)优点

(2)缺点

六、应用场景

(1)电子商务网站

(2)内容推送

(3)ETL工具

七、其他类似Flume框架

八、Flume插件

九、启动参数详解

总结


一、什么是Flume?

Flume是由Cloudera软件公司提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,后与2009年被捐赠了apache软件基金会,为hadoop相关组件之一。尤其近几年随着flume的不断被完善以及升级版本的逐一推出,特别是flume-ng;同时flume内部的各种组件不断丰富,用户在开发的过程中使用的便利性得到很大的改善,现已成为apache top项目之一。

apache Flume 是一个从可以收集例如日志,事件等数据资源,并将这些数量庞大的数据从各项数据资源中集中起来存储的工具/服务。flume具有高可用,分布式,配置工具,其设计的原理也是基于将数据流,如日志数据从各种网站服务器上汇集起来存储到HDFS,HBase等集中存储器中。

二、安装

Flume的安装很简单,目前最新版本是1.9.0,安装1.9.0要满足以下几个条件:

  1. java运行环境,要安装jdk1.7以上版本
  2. 系统内存要足够用运行agent组件source,channel和sink。
  3. 磁盘空间要足够
  4. 目录权限,agent要有足够读写权限

Flume下载最新版本后,进行解压即可,但是要确保安装了java运行环境。

PS:默认flume是不支持windows系统的,没有bat的启动命令。不过有一个flume-ng.cmd,其实它也不是启动文件,只是启动了一个powershell而已,如果你本地有这个软件,就可以在windows下运行了。

三、Flume目录结构

文件夹说明
bin存放了启动脚本
lib启动所需的所有组件jar包
conf提供了几个测试配置文件
docs文档

四、Flume Agent组件

Flume内部有一个或者多个Agent,然而对于每一个Agent来说,它就是一共独立的守护进程(JVM),它从客户端哪儿接收收集,或者从其他的 Agent哪儿接收,然后迅速的将获取的数据传给下一个目的节点sink,或者agent。

(1)Source

source 负责数据的产生或搜集,一般是对接一些RPC的程序或者是其他的flume节点的sink,从数据发生器接收数据,并将接收的数据以Flume的event格式传递给一个或者多个通道Channel,Flume提供多种数据接收的方式,比如包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy、自定义。

类型描述
Avro监听Avro端口并接收Avro Client的流数据
Thrift监听Thrift端口并接收Thrift Client的流数据
Exec基于Unix的command在标准输出上生产数据
JMS从JMS(Java消息服务)采集数据
Spooling Directory监听指定目录
Twitter 1%通过API持续下载Twitter数据(实验阶段)
Kafka采集Kafka topic中的message
NetCat监听端口(要求所提供的数据是换行符分隔的文本)
Sequence Generator序列产生器,连续不断产生event,用于测试
Syslog采集syslog日志消息,支持单端口TCP、多端口TCP和UDP日志采集
HTTP接收HTTP POST和GET数据
Stress用于source压力测试
Legacy向下兼容,接收低版本Flume的数据
Custom自定义source的接口
Scribe从facebook Scribe采集数据

(2)channel

Channel 是一种短暂的存储容器,负责数据的存储持久化,可以持久化到jdbc,file,memory,将从source处接收到的event格式的数据缓存起来,直到它们被sinks消费掉,可以把channel看成是一个队列,队列的优点是先进先出,放好后尾部一个个event出来,Flume比较看重数据的传输,因此几乎没有数据的解析预处理。仅仅是数据的产生,封装成event然后传输。数据只有存储在下一个存储位置(可能是最终的存储位置,如HDFS;也可能是下一个Flume节点的channel),数据才会从当前的channel中删除。这个过程是通过事务来控制的,这样就保证了数据的可靠性。

不过flume的持久化也是有容量限制的,比如内存如果超过一定的量,不够分配,也一样会爆掉。

类型描述
MemoryEvent数据存储在内存中
JDBCEvent数据存储在持久化存储中,当前Flume Channel内置支持Derby
KafkaEvent存储在kafka集群
File ChannelEvent数据存储在磁盘文件中
Spillable Memory ChannelEvent数据存储在内存中和磁盘上,当内存队列满了,会持久化到磁盘文件(当前试验性的,不建议生产环境使用)
Pseudo Transaction Channel测试用途
Custom Channel自定义Channel实现

(3)sink

sink 负责数据的转发,将数据存储到集中存储器比如Hbase和HDFS,它从channel消费数据(events)并将其传递给目标地。目标地可能是另一个sink,也可能是hdfs、logger、avro、thrift、ipc、file、null、Hbase、solr、自定义等。

类型描述
HDFS数据写入HDFS
HIVE数据导入到HIVE中
Logger数据写入日志文件
Avro数据被转换成Avro Event,然后发送到配置的RPC端口上
Thrift数据被转换成Thrift Event,然后发送到配置的RPC端口上
IRC数据在IRC上进行回放
File Roll存储数据到本地文件系统
Null丢弃到所有数据
Hive数据写入Hive
HBase数据写入HBase数据库
Morphline Solr数据发送到Solr搜索服务器(集群)
ElasticSearch数据发送到Elastic Search搜索服务器(集群)
Kite Dataset写数据到Kite Dataset,试验性质的
Kafka数据写到Kafka Topic
Custom自定义Sink实现

五、Flume有哪些优缺点

(1)优点

  1. Flume可以将应用产生的数据存储到任何集中存储器中,比如HDFS,HBase。
  2. 当收集数据的速度超过将写入数据的时候,也就是当收集信息遇到峰值时,这时候收集的信息非常大,甚至超过了系统的写入数据能力,这时候,Flume会在数据生产者和数据收容器间做出调整,保证其能够在两者之间提供一共平稳的数据。
  3. 提供上下文路由特征。
  4. Flume的管道是基于事务,保证了数据在传送和接收时的一致性。
  5. Flume是可靠的,容错性高的,可升级的,易管理的,并且可定制的。
  6. 实时性,Flume有一个好处可以实时的将分析数据并将数据保存在数据库或者其他系统中。

(2)缺点

Flume的配置很繁琐,source,channel,sink的关系在配置文件里面交织在一起,不便于管理。

六、应用场景

(1)电子商务网站

比如我们在做一个电子商务网站,然后我们想从消费用户中访问点特定的节点区域来分析消费者的行为或者购买意图. 这样我们就可以更加快速的将他想要的推送到界面上,实现这一点,我们需要将获取到的她访问的页面以及点击的产品数据等日志数据信息收集并移交给Hadoop平台上去分析,而Flume正是帮我们做到这一点。

(2)内容推送

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

(3)ETL工具

可以利用插件把关系型数据实时增量的导入到Hdfs外部数据源。

七、其他类似Flume框架

Facebook的Scribe,还有Apache新出的另一个明星项目chukwa,还有淘宝Time Tunnel

八、Flume插件

(1)Interceptors拦截器

用于source和channel之间,用来更改或者检查Flume的events数据

(2)管道选择器 channels Selectors

在多管道是被用来选择使用那一条管道来传递数据(events). 管道选择器又分为如下两种:

  • 默认管道选择器: 每一个管道传递的都是相同的events
  • 多路复用通道选择器: 依据每一个event的头部header的地址选择管道.

(3)sink线程

用于激活被选择的sinks群中特定的sink,用于负载均衡.

九、启动参数详解

你可以输入flume-ng help获得帮助提示:

参数描述
commands这个是很重要的参数,因为flume可以使用不同的角色启动,比如agent以及client等等。暂时搞不清楚avro-client有什么特殊的,先了解一下吧!平时启动就使用agent就可以了
--conf 或者 -c指定去conf目录下加载配置文件
--classpath 或者 -C指定类加载的路径
--conf-file 或者 -f指定配置文件

总结

关于flume的agent组件source,channel,sink的详细配置,将会在后面的文章中给出。老规矩:如果大家有大数据技术类的问题,欢迎在评论里面留言,我会一一回复,希望跟大家共同努力,共同进步,由于自己也在学习阶段,水平有限,还请专业的高手给予指点,提提意见,一起交流分享经验,帮助我尽快提高水平,更上一个新台阶。

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Filebeat和Flume是两种常见的日志收集工具。 Filebeat是一种轻量级的日志收集工具,由Elasticsearch公司开发。它的主要功能是监控文件变动,并将变动的日志数据发送给不同的目标,如Elasticsearch、Logstash等。Filebeat可以轻松地安装和配置,适用于小型到中型的环境。它使用了低资源消耗的方式,能够高效地将日志数据收集和发送。 Flume是Apache软件基金会开发的另一种日志收集工具。它是一个可扩展的、分布式的系统,用于采集、聚合和移动大量的日志数据。Flume的核心是Event、Channel和Sink。Event是日志数据的基本单元,Channel是用于存储Event的缓冲区,Sink是用于将Event发送到目标系统的组件。Flume可以与多种数据源和目标集成,并且可以通过拓扑结构进行配置,以满足不同场景的需求。 两者的不同之处主要体现在以下几个方面: 1. 功能和用途:Filebeat主要用于收集、过滤和发送日志数据,适用于小型到中型的环境;而Flume不仅可以用于日志收集,还可以进行数据聚合、转换和分发,适用于大型的分布式环境。 2. 架构和可扩展性:Filebeat是一个轻量级的单节点工具,适用于规模较小的环境,可通过增加更多的Filebeat实例实现扩展;而Flume采用了分布式的架构,可以通过增加Agent和Sink等组件来实现高可用和高性能的日志传输。 3. 社区和生态系统:Filebeat由Elasticsearch公司维护,与其它Elastic产品(如Elasticsearch、Logstash、Kibana)的集成相对简单;而Flume是Apache软件基金会的项目,有大量的社区支持和丰富的生态系统,可以与各种大数据组件进行集成。 综上所述,Filebeat和Flume都是强大的日志收集工具,选择哪个取决于实际需求和环境规模。如果只需要简单的日志收集和传输功能,可以选择Filebeat;而对于复杂的日志处理和大规模的分布式环境,则可以选择Flume。 ### 回答2: Filebeat和Flume都是用于日志收集的工具,但在实现细节和部分功能上有所不同。 1. 架构: - Filebeat: Filebeat是Elasticsearch公司开发的一个轻量级的开源日志收集工具。它可以将日志文件从指定位置读取并发送到Elasticsearch、Logstash等目标系统。 - Flume: Flume是Apache基金会开发的一个分布式的、可靠的和高可用性的数据收集工具。Flume使用Agent和Sink的架构模型,Agent负责从原始数据源收集日志,然后通过Channel存储到Sink进行集中式处理。 2. 部署和配置: - Filebeat: Filebeat提供了轻量级的安装和配置。只需要在目标服务器上安装Filebeat,并通过简单的配置文件指定日志文件路径和目标系统即可。 - Flume: Flume需要在每个Agent和Sink节点上部署,并进行复杂的配置,包括Agent、Channel和Sink的组合配置,以及事件过滤、转换等。 3. 可靠性和可扩展性: - Filebeat: Filebeat具有较低的资源占用和较好的性能,适合在单机上处理日志。但在大规模日志收集和高可用性需求下表现不足。 - Flume: Flume具有高可靠性和可扩展性,可以通过配置多个Agent和Sink进行分布式部署,同时支持数据备份和故障恢复。 4. 功能扩展性: - Filebeat: Filebeat提供了一些基本的功能,如文件追踪、多行日志处理和数据编码等。对于高级功能如事件过滤、转换以及复杂的数据处理,需要结合Logstash等工具一起使用。 - Flume: Flume提供了丰富的功能和插件,包括事件过滤、转换,以及自定义Sink插件等。同时,Flume支持自定义的Channel和拦截器,可以进行更加复杂的数据处理和转发。 综上所述,Filebeat适用于简单的日志收集场景,部署简单且性能较好。而Flume适用于大规模分布式的日志收集和复杂的数据处理场景,功能丰富且具有高可靠性和可扩展性。最终的选择应根据实际需求和系统架构来决定。 ### 回答3: Filebeat是一个轻量级的数据传输工具,用于收集日志文件和指定位置的其他文件,然后将其发送到Elasticsearch或Logstash进行进一步的处理和分析。它是Elastic Stack的一部分,用于实时数据传输和处理。 Flume是一个分布式、可靠且可扩展的日志收集和聚合系统,主要用于大规模日志数据的传输和处理。它支持各种数据源和目标,并提供了强大的过滤和转换功能。 Filebeat和Flume在以下几个方面有所区别: 1. 架构:Filebeat采用轻量级代理方式,通过直接读取文件内容,并将数据发送到目标系统,因此对硬件资源和网络带宽要求较低。而Flume是一个完整的分布式系统,包含多个组件,可以实现高吞吐量和可靠性。 2. 功能特性:Filebeat的主要功能是文件收集和传输,支持多种输入源和目标,具有简化的配置和部署。而Flume功能更加丰富,支持广泛的数据源和目标,并提供了过滤、转换等高级功能,适用于复杂的数据处理需求。 3. 可伸缩性:Flume通过分布式架构和拓扑模型来支持高可伸缩性,可以实现数据的高吞吐量传输和处理。Filebeat的设计更加简单,适用于小规模和中等规模的数据传输。 4. 社区支持:Filebeat是Elastic Stack的一部分,拥有活跃的开源社区,提供了丰富的文档和示例。Flume同样也是一个开源项目,拥有庞大的用户群体和活跃的社区支持。 综上所述,Filebeat和Flume都是用于日志数据传输和处理的工具,但在架构、功能特性、可伸缩性和社区支持等方面有所区别,根据具体的需求和环境选择适合的工具更为重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值