開源實時流處理系統(tǒng)小結
這里對目前業(yè)界開源的一些實時流處理系統(tǒng)做一次小結,作為日后進行技術調研的參考資料。
S4
S4(Simple Scalable Streaming System)是Yahoo最新發(fā)布的一個開源流計算平臺,它是一個通用的、分布式的、可擴展性良好、具有分區(qū)容錯能力、支持插件的分布式流計算平臺,在該平臺上程序員可以很方便地開發(fā)面向無界不間斷流數(shù)據(jù)處理的應用,開發(fā)語言為Java。
項目鏈接:http://incubator.apache.org/s4/(注:S4 0.5.0已支持TCP鏈接及狀態(tài)恢復等特性)
Storm
Storm是Twitter開源的分布式實時計算系統(tǒng),Storm通過簡單的API使開發(fā)者可以可靠地處理無界持續(xù)的流數(shù)據(jù),進行實時計算,開發(fā)語言為Clojure和Java,非JVM語言可以通過stdin/stdout以JSON格式協(xié)議與Storm進行通信。Storm的應用場景很多:實時分析、在線機器學習、持續(xù)計算、分布式RPC、ETL處理,等等。
StreamBase
StreamBase是一個關于復雜事件處理(CEP)、事件流處理的平臺。其本身是商業(yè)應用軟件,但提供了Developer Edition,開發(fā)語言為Java。
項目鏈接:http://www.streambase.com
HStreaming
HStreaming構建在Hadoop之上,可以和Hadoop及其生態(tài)系統(tǒng)緊密結合起來提供實時流計算服務。這使得HStreaming的用戶可以在同一個生態(tài)系統(tǒng)中分析處理大數(shù)據(jù),開發(fā)語言為Java。
項目鏈接:http://www.hstreaming.com
Esper & NEsper
Esper是專門進行復雜事件處理(CEP)的流處理平臺,Java版本為Esper,.Net版本為NEsper。Esper & NEsper可以方便開發(fā)者快速開發(fā)部署處理大容量消息和事件的應用系統(tǒng),不論是歷史的還是實時的消息。
項目鏈接:http://esper.codehaus.org
Kafka
Kafka是Linkedin于2010年12月份開源的高吞吐、基于Pub-Sub的分布式消息系統(tǒng),主要用于處理活躍的流式數(shù)據(jù),開發(fā)語言為Scala。
項目鏈接:http://incubator.apache.org/kafka
Scribe
Scribe是Facebook開源的日志收集系統(tǒng),開發(fā)語言為C,通過Thrift可以支持多種常用客戶端語言,在Facebook內部已經(jīng)得到大量的應用。它能夠從各種日志源上收集日志,存儲到一個中央存儲系統(tǒng)(可以是NFS,分布式文件系統(tǒng)等)上,以便于進行集中統(tǒng)計分析處理。它為日志的“分布式收集,統(tǒng)一處理”提供了一個可擴展的,高容錯的方案。Scribe通常與Hadoop結合使用,Scribe用于向HDFS中push日志,而Hadoop通過MapReduce作業(yè)進行定期處理。
項目鏈接:http://github.com/facebook/scribe
Flume
Flume是Cloudera提供的一個分布式、可靠的、高可用的日志收集系統(tǒng),用于收集、聚合以及移動大量日志數(shù)據(jù),開發(fā)語言為Java。Flume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時,F(xiàn)lume提供對數(shù)據(jù)進行簡單處理,并寫到各種數(shù)據(jù)接收方(可定制)的能力。
項目鏈接:http://incubator.apache.org/flume