文档介绍:浅析Flume大数据日志采集系统
 
 
付宇
摘 要:随着大数据、社交网络、云计算等技术不断融入我们的生活以及现有的计算能力、存储空间、网络带宽的高速发展,人类积累的数据在互联网、通信、金融、商业、医疗等诸多领域不断地增长和累积。在大数裾学****开发过程中,会产生各种各样的数据源信息,如网站流量日志分析系统产生的日志数据,这些数据的收集、监听、使用非常重要。针对类似业务需求,通常会使用 Apache旗下的Flume日志采集系统完成相关数据采集工作。本文主要对Flume大数据日志采集系统进行介绍。
关键词:大数据;Flume;日志采集
近几年来,随着计算机和信息技术的迅猛发展和普及应用,行业应用系统的规模迅速扩大,行业应用所产生的数据呈爆炸性增长。动辄达到数百TB甚至数十至数百PB规模的行业/企业大数据已远远超出了现有传统的计算技术和信息系统的处理能力。如何对产生的大数据进行采集是大数据处理面临的问题之一。Apache Flume是一个高可靠、高可用的分布式系统,用于高效地从许多不同的
数据源收集、聚合大批量的日志数据,进行集中式存储。Flume最早是Cloudera公司提供的一个高可用的、高可靠的、分布式海量日志采集、聚合和传输系统,之后纳入到了 Apache旗下,作为一个顶级开源项目。Apache Flume不仅只限于日志数据的采集,由于Flume采集的数据源是可定制的,因此Flume还可用于传输大量事件数据,包括但不限于网络流量数据、社交媒体生成的数据、电子邮件消息以及几乎任何可能的数据源。本文接下来主要对Flume的架构和相关组件进行介绍。
1  Flume的运行机制和系统结构
Flume中有3个核心组件,它们分别是数据采集器(Source)、缓冲通道(Channel)以及接收器(Sink)。Flume的核心运行机制就是把数据从数据源,例如Web Server,通过数据采集器(Source)收集过来,再将收集的数据通过缓冲通道(Channel)汇集到指定的接收器(Sink)。Flume的基本架构中有一个Agent,它是Flume的核心角色,Flume Agent是一个JVM进程,它承载着将数据从外部数据源流向下一个目标的3个核心组件Source、Channel和Sink。
数据采集器Source用于源数据的采集,(例如从一个Web服务器采集源数据),然后将采集到的数据写入到Channel中并流向Sink。
缓冲通道Channel是一个缓冲队列,它用来对Source中的数据进行缓存,并将数据髙效、准确地寫人Sink,当数据全部写入Sink后,Flume就会删除该缓存通道中的数据。
接收器Sink接收并汇集流向Sink的所有数据。根据需求,可以直接对数据进行集中式存储(例如采用HDFS进行存储),也可以继续作为数据源传入其他远程服务器或者Source中。
在整个数据传输的过程中,Flume会将流动的数据封装到一个event中,event是Flume内部数据传输的基本单元。一个完整的event包含headers和body,其中headers包含了一些标识信息,而body中就是Flume收集到的数据信息。
在实际开发中,Flume需要采集数据的类型多种多