大数据分析(BDA)包括大数据的采集、存储、分析、展示。而其中分析是BDA的关键。说到分析,可以分为历史分析和实时分析。上次我们着重提过了历史分析,尤其是交互式历史分析,当然还有批处理式的历史分析。

这次,我们回过头来再谈谈实时分析,包括流处理、CEP,等等。

说到CEP,复杂事件处理(Complex Event Process),在2009年的时候我就有博文提及过。经过这么些年,CEP技术不断演进,越来越实用化。Yahoo!的S4算是一个使用的CEP引擎,当然,还有我们今天谈及的Strom,这个Twitter的CEP引擎。

在今天的DevelperWorks上有篇文章谈到了Storm,大家可以看看,包括后面的参考链接。

流处理在进行实时分析的时候具有天然的优势,尤其是在相对于基于数据的分析的时候。流具有很高的实时性。

传统关系型数据库

流数据库

关系型数据库

面向对象的数据库,包括POJO

磁盘/内存处理

内存处理

表(静态)

流(动态、基于时间窗口)

记录

事件

被动SQL查询

主动模式匹配(EQL,事件查询语言)

 

EQL也有称为CQL,持续查询语言。

目前,在我们的SIEM产品中,关联分析引擎采用了CEP技术。

开源的CEP也不不少,例如Esper,不过,要真正应用到SIEM中,还需要较大的修改,直接用还是不合适的。关键是要理解CEP的精髓。呵呵。

【参考】

对大数据进行交互式分析