一、flume简介
1、用于日志收集
2、高效收集、聚合、移动大量日志。架构简单灵活,数据流(动态计算)技术。
3、在线分析应用。
二、agent组件
1.source
来源,input
2.channel
通道,缓冲区 buffer
3.sink
沉出 output
三、flume优点
1.支持广泛的*化存储(hdfs|hbase)
2.当传入数据的速率超过可以将数据写入目的地的速率时,
Flume充当数据生成器和集中存储之间的中介器,
并在数据生成器和集中存储之间提供稳定的数据流。
3.Flume提供了上下文路由的功能
4.Flume中的交易是基于渠道的,其中为每个消息维护两个交易(一个发送者和一个接收者)。
它保证可靠的消息传递。
5、flume是可靠的,容错的,可扩展的,可管理的和可定制的。
四、flume特征
1、Flume从多个Web服务器将数据记录到集中式存储(HDFS,HBase)中。
2、使用Flume,我们可以将数据从多个服务器立即获取到Hadoop中。
3、与日志文件一起,Flume还用于导入大量的社交网站(如Facebook和Twitter)以及亚马逊和Flipkart等电子商务网站生成的事件数据。
4、Flume支持大量的源和目的地类型。
5、Flume支持多跳流量,扇出扇出流,上下文路由等。
6、Flume可以水平伸缩。
五、flume与Hadoop的put命令比较
1、我们知道,大数据是大量数据集的集合,使用put命令无法处理,我们只能在数据生成器以更高的速率生成数据时一次只传输一个文件。 由于对旧数据的分析不太准确,我们需要有一个实时传输数据的解决方案。
2、如果我们使用put命令,则需要打包数据,并准备上传。 由于Web服务器不断生成数据,这是一项非常困难的任务。
我们需要的是一个解决方案,可以克服put命令的缺点,并将“流数据”从数据发生器传输到集中存储(特别是HDFS),延迟较少。
六、HDFS问题
1、在HDFS中,文件作为目录条目存在,文件的长度将被视为零,直到关闭。 例如,如果源将数据写入HDFS,并且在操作中间网络中断(不关闭文件),则写入文件的数据将丢失。
2、因此,我们需要一个可靠,可配置和可维护的系统将日志数据传输到HDFS。
注意:在POSIX文件系统中,每当我们访问一个文件(例如执行写入操作)时,其他程序仍然可以读取此文件(至少保存的文件部分)。 这是因为文件在关闭之前存在于光盘上。
七、解决方案
要将流式数据(日志文件,事件等)从各种来源发送到HDFS,我们提供以下可用的工具:
1、Facebook的Scribe员
Scribe是一个非常受欢迎的工具,用于聚合和流式传输日志数据。 它被设计为扩展到非常大量的节点,并且对于网络和节点故障具有容灾。
2、Apache Kafka
Kafka是由Apache软件基金会开发的。它是一个开放源码消息代理。使用卡夫卡,我们可以处理高吞吐量和低延迟的数据源。
3、Apache的flume
Apache的flume是一个收集汇总和输送大量的流数据,如日志数据的工具/服务/数据摄取机制、事件(等)从不同的webserves集中到一个数据存储。
这是一个高度可靠的,分布式的,可配置的工具,主要用来传输各种来源的HDFS数据流。
八、flume架构
下面的插图描绘了Flume的基本架构。如图所示,数据生成器(如脸谱网、Twitter)生成的数据由在其上运行的单个Flume代理收集。此后,数据采集器(即代理人)从代理汇总和推到一个集中的数据搜集器如HDFS和HBase的数据收集。
1、Flume Event
事件是Flume内传输的数据的基本单位。 它包含一个字节数组的有效负载,该有效负载将从源到目的地传送到目的地,并附有可选的头。 典型的Flume事件将具有以下结构:
2、Flume Agent
代理是Flume中独立的守护进程(JVM)。 它从客户端或其他代理接收数据(事件),并将其转发到下一个目的地(汇点或代理)。 Flume 可能有多个代理。 以下图表示一个Flume Agent
如图所示,Flume Agent包含三个主要组件,即源,通道和接收器。
Source
Source是代理的组件,它从数据生成器接收数据,并以Flume事件的形式将其传送到一个或多个通道。
Apache Flume支持多种类型的源,每个源都从指定的数据生成器接收事件。 示例 - Avro源,Thrift源,twitter 1%源等
Channel
一个通道是一个临时存储,它从源中接收事件并缓冲它们,直到它们被sink所消耗。 它作为源和汇之间的桥梁。
这些渠道是完全交易的,它们可以与任何数量的资源和汇点配合使用。 示例 - JDBC通道,文件系统通道,内存通道等
Sink
sink将数据存储到集中存储中,如HBase和HDFS。 它从通道中消耗数据(事件)并将其传送到目的地。 Flume的目的地可能是另一个代理商或*处理器。
示例 - HDFS接收器,HBase接收器,Avro接收器,Kafka接收器等
Additional Components of Flume Agent
我们上面讨论的是代理的原始组件。除此之外,我们还有几个组件在将事件从数据生成器转移到集中存储中起着至关重要的作用。
Interceptors
拦截器用于改变/检查源和信道之间传输的Flume 事件。
Channel Selectors
这些用于确定在多个通道的情况下哪个通道要选择传输数据。 通道选择器有两种类型:
1、默认通道选择器:这些也称为复制通道选择器,它们复制每个通道中的所有事件。
2、多路复用通道选择器:这些决定通道根据事件标题中的地址发送事件。
Sink Processors
这些用于从选定的接收组中调用特定接收器。 这些用于为您的接收器创建故障转移路径,或者通过通道在多个接收器之间建立负载平衡事件。