這裡對目前業界開源的一些實時流處理系統做一次小結,作為日後進行技術調研的參考資料。
S4(Simple Scalable Streaming System)是Yahoo最新釋出的一個開源流計算平台,它是一個通用的、分布式的、可擴充性良好、具有分區容錯能力、支援插件的分布式流計算平台,在該平台上程式員可以很友善地開發面向無界不間斷流資料處理的應用,開發語言為Java。
Storm是Twitter開源的分布式實時計算系統,Storm通過簡單的API使開發者可以可靠地處理無界持續的流資料,進行實時計算,開發語言為Clojure和Java,非JVM語言可以通過stdin/stdout以JSON格式協定與Storm進行通信。Storm的應用場景很多:實時分析、線上機器學習、持續計算、分布式RPC、ETL處理,等等。
StreamBase是一個關于複雜事件處理(CEP)、事件流處理的平台。其本身是商業應用軟體,但提供了Developer Edition,開發語言為Java。
HStreaming建構在Hadoop之上,可以和Hadoop及其生态系統緊密結合起來提供實時流計算服務。這使得HStreaming的使用者可以在同一個生态系統中分析處理大資料,開發語言為Java。
Esper是專門進行複雜事件處理(CEP)的流處理平台,Java版本為Esper,.Net版本為NEsper。Esper & NEsper可以友善開發者快速開發部署處理大容量消息和事件的應用系統,不論是曆史的還是實時的消息。
Kafka是Linkedin于2010年12月份開源的高吞吐、基于Pub-Sub的分布式消息系統,主要用于處理活躍的流式資料,開發語言為Scala。
Scribe是Facebook開源的日志收集系統,開發語言為C,通過Thrift可以支援多種常用用戶端語言,在Facebook内部已經得到大量的應用。它能夠從各種日志源上收集日志,存儲到一個中央存儲系統(可以是NFS,分布式檔案系統等)上,以便于進行集中統計分析處理。它為日志的“分布式收集,統一處理”提供了一個可擴充的,高容錯的方案。Scribe通常與Hadoop結合使用,Scribe用于向HDFS中push日志,而Hadoop通過MapReduce作業進行定期處理。
Flume是Cloudera提供的一個分布式、可靠的、高可用的日志收集系統,用于收集、聚合以及移動大量日志資料,開發語言為Java。Flume支援在日志系統中定制各類資料發送方,用于收集資料;同時,Flume提供對資料進行簡單處理,并寫到各種資料接收方(可定制)的能力。