大数据分析(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的精髓。呵呵。
【参考】
本文转自叶蓬 51CTO博客,原文链接:http://blog.51cto.com/yepeng/1079682,如需转载请自行联系原作者