这里对目前业界开源的一些实时流处理系统做一次小结,作为日后进行技术调研的参考资料。
S4
S4(Simple Scalable Streaming System)是Yahoo最新发布的一个开源流计算平台,它是一个通用的、分布式的、可扩展性良好、具有分区容错能力、支持插件的分布式流计算平台,在该平台上程序员可以很方便地开发面向无界不间断流数据处理的应用,开发语言为Java。
项目链接:http://incubator.apache.org/s4/(注:S4 0.5.0已支持TCP链接及状态恢复等特性)
Storm
Storm是Twitter开源的分布式实时计算系统,Storm通过简单的API使开发者可以可靠地处理无界持续的流数据,进行实时计算,开发语言为Clojure和Java,非JVM语言可以通过stdin/stdout以JSON格式协议与Storm进行通信。Storm的应用场景很多:实时分析、在线机器学习、持续计算、分布式RPC、ETL处理,等等。
StreamBase
StreamBase是一个关于复杂事件处理(CEP)、事件流处理的平台。其本身是商业应用软件,但提供了Developer Edition,开发语言为Java。
项目链接:http://www.streambase.com
HStreaming
HStreaming构建在Hadoop之上,可以和Hadoop及其生态系统紧密结合起来提供实时流计算服务。这使得HStreaming的用户可以在同一个生态系统中分析处理大数据,开发语言为Java。
项目链接:http://www.hstreaming.com
Esper & NEsper
Esper是专门进行复杂事件处理(CEP)的流处理平台,Java版本为Esper,.Net版本为NEsper。Esper & NEsper可以方便开发者快速开发部署处理大容量消息和事件的应用系统,不论是历史的还是实时的消息。
项目链接:http://esper.codehaus.org
Kafka
Kafka是Linkedin于2010年12月份开源的高吞吐、基于Pub-Sub的分布式消息系统,主要用于处理活跃的流式数据,开发语言为Scala。
项目链接:http://incubator.apache.org/kafka
Scribe
Scribe是Facebook开源的日志收集系统,开发语言为C,通过Thrift可以支持多种常用客户端语言,在Facebook内部已经得到大量的应用。它能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NFS,分布式文件系统等)上,以便于进行集中统计分析处理。它为日志的“分布式收集,统一处理”提供了一个可扩展的,高容错的方案。Scribe通常与Hadoop结合使用,Scribe用于向HDFS中push日志,而Hadoop通过MapReduce作业进行定期处理。
项目链接:http://github.com/facebook/scribe
Flume
Flume是Cloudera提供的一个分布式、可靠的、高可用的日志收集系统,用于收集、聚合以及移动大量日志数据,开发语言为Java。Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接收方(可定制)的能力。
项目链接:http://incubator.apache.org/flume