大数据数据采集之Flume
Posted 3号高地
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据数据采集之Flume相关的知识,希望对你有一定的参考价值。
上一篇我们介绍了爬虫这种数据采集方式
戳→
今天我们来说说Flume工具
它是Hadoop生态体系中的重要环节,主要是用来采集和分发日志和事件的(注:这里说的日志不仅仅包含系统日志和用户日志,还包括各种数据,例如下图中Twitter等网络数据)。
试想下,我们使用上百台服务器部署爬虫程序,每台服务器中运行上百个爬虫程序。怎么知道各个爬虫程序是否运作正常,服务器是否崩溃,采集数据的任务是否出现异常?这就需要采集各种日志,进行流数据分析和批数据分析。
1、Flume的概念
Flume是分布式的日志收集系统,它将各个服务器中的数据收集起来并送到指定的地方去,比如kafka、HBase、HDFS等,简单来说Flume就是收集日志的。
2、Event的概念
Flume的核心是把数据从数据源(source)收集过来,在将收集到的数据送到指定的目的地(sink)。为了保证输送的过程一定成功,在送到目的地(sink)之前,会先缓存数据(channel),待数据真正到达目的地(sink)后,Flume在删除自己缓存的数据。
在整个数据的传输的过程中,流动的是event,即事务保证是在event进行的。event将传输的数据进行封装,是Flume传输数据的基本单位,如果是文本文件,通常是一行记录,event也是事务的基本单位。event从source,流向channel,再到sink,本身为一个字节数组,并可携带headers(头信息)信息。event代表着一个数据的最小完整单元,从外部数据源来,向外部的目的地去。
为了方便理解,给出一张event数据流向图:
3、Flume的运行机制
Flume之所以这么神奇,其原因也在于Flume可以支持多级Flume的agent,即Flume可以前后相继,例如sink可以将数据写到下一个agent的source中,这样的话就可以连成串了,可以整体处理了。Flume还支持扇入(fan-in)、扇出(fan-out)。所谓扇入就是source可以接受多个输入,所谓扇出就是sink可以将数据输出多个目的地destination中。
4、Flume的source和sink
Flume的强大之处还在于丰富的source和sink,能与各种源对接。参考官方文档(http://flume.apache.org/FlumeUserGuide.html#http-source)Flume能够接受包括网络端口数据、kafka流数据、系统日志数据、HTTP数据、用户自定义数据等众多种类的数据。其能够向数据库、普通文件、其他Hadoop子系统等发送采集到的数据。经过简单的配置能够实现强大的功能。
Flume在实际应用中比较流行的方式有如下两种:
1、线上数据 -> Flume -> kafka -> hdfs -> MapReduce离线计算
2、线上数据 -> Flume -> kafka -> storm(流数据计算)
下期预告,数据传输之kafka。
以上是关于大数据数据采集之Flume的主要内容,如果未能解决你的问题,请参考以下文章