日志采集分析: flume+kafka+storm+mysql架构设计


http://blog.csdn.net/mylittlered/article/details/20810265



架构图


数据流向图


(是visio画的,图太大,放上来字看起来比较小,如果有需要的朋友留邮箱)

实时日志分析系统架构简介

系统主要分为四部分:


                       

1).数据采集

负责从各节点上实时采集数据,选用cloudera的flume来实现

2).数据接入

由于采集数据的速度和数据处理的速度不一定同步,因此添加一个消息中间件来作为缓冲,选用apache的kafka

3).流式计算

对采集到的数据进行实时分析,选用apache的storm

4).数据输出

对分析后的结果持久化,暂定用MySQL


Flume

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

下图为flume典型的体系结构:


Flume数据源以及输出方式:

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

Flume的数据接受方,可以是console(控制台)、text(文件)、dfs(HDFS文件)、RPC(Thrift-RPC)和syslogTCP(TCP syslog日志系统)等。在我们系统中由kafka来接收。


Kafka

Kafka是一个消息中间件,它的特点是:

1、关注大吞吐量,而不是别的特性

2、针对实时性场景

3、关于消息被处理的状态是在consumer端维护,而不是由kafka server端维护。

4、分布式,producer、broker和consumer都分布于多台机器上。

   下图为kafka的架构图:


 

 

storm

Storm是一个分布式的、高容错的实时计算系统。

Storm架构图:

storm工作任务topology:


请使用浏览器的分享功能分享到微信等