從Apache Spark 2.3看大數據流式計算的發展趨勢
Apache Spark 2.3正式發布,其中一些具有里程碑意義的新特性:像Structured Streaming引入了低延遲的連續處理(continuous processing);支持流到流的join;改善Pandas UDFs 的性能來提升PySpark;支持調度引擎Kubernetes clusters;對MLlib的演算法、特性、功能和擴展性的提升。這其中我最關注的還是新引入的流處理模式——連續模式(continuous mode)。
低延遲之爭
眾所周知Apache Spark 2.0的Streaming模式是微批處理(micro-batch),這種模式的優勢在於消息傳輸的可靠性高,每個批處理記錄僅被處理一次(即exactly once)。但由於其採取窗口和滑動時間間隔的機制,導致延遲性較高,一般在實際測試中多在秒級。這在某些對時延要求較高的應用場景下不是最佳解決方案。
對此,社區在Spark 2.3引入另外一種流處理模式:連續模式(continuous mode)。與制定觸發時間間隔的微批模式不同,這種模式下流引擎連續拉取源數據、處理數據。新紀錄到達即被處理,滿足低延遲的場景需求(官方宣稱是sub-millisecond即亞微秒級延遲)。可以說,Spark 2.3等於吸收了Storm的流處理模式——事件處理。但相應的,其消息保障也僅能達到至少一次的語義保證(at least once)。
我認為這是Spark社區對於大數據流式計算的一種妥協:由於微批模式在實際應用中對於實時性要求較高的場景支持不佳,引入連續模式將豐富Structured Streaming,提供給開發者更多的選擇。此外,面對Flink、Storm等流式框架的競爭,Spark 2.3也能夠支持較低延遲的應用,能夠為過去基於Spark構建大數據的企業和廠商提供更好的兼容性。不過,由於Spark 2.3的連續模式仍然是實驗性質的,在實際應用中與Flink相比有哪些優缺點,仍然依賴於後面實際測試中的結論。
Kafka Stream vs Spark
在大數據流計算中,Kafka Stream是新的競爭對手。由於Kafka目前作為實時流處理中的數據源應用非常廣泛,基本上成為了事實標準,因此Kakfa Stream無需其他外部依賴的優點也非常明顯。另外,Spark、Storm、Flink這些都是流式處理框架,天然需要開發者開放邏輯處理部分讓框架調用,這樣的開放、調試成本較高;而Kafka Stream提供的是基於Kafka的流處理庫,開發起來就會非常方便,作為流式計算的標準數據源其使用成本也很低。
使用Spark需要構建一個集群,而Kafka Stream則不需要,而且Kafka本身也提供數據持久化,所以我預計未來Kakfa Stream將會對大數據流計算框架造成一定程度的衝擊。不過,如果需要支持流上的複雜事件處理、數據科學、統計分析等場景,那麼Spark、Flink這類框架是繞不開的,畢竟一個嵌入式類庫仍無法替代資料庫的作用。Kakfa Stream本質上還是一種輕量級的流計算模式,而Spark 2.3則提供了更豐富的數據處理和分析能力,如流與流的join、MLlib的強化等。
複雜事件處理(CEP)
複雜事件處理(CEP)目前在一些應用場景如量化交易、實時風控、市場趨勢分析等領域使用較廣。比較成熟的CEP技術方案如Esper、Apama、StreamBase等,針對大量、多個數據源進行實時處理,解決的是在持續事件中匹配模式的問題。目前結合流式計算的CEP方案已經有了一定的發展,像Flink提供了CEP API,支持快速定義複雜事件。此外,一些商用大數據廠商也提供了流上的複雜事件處理,像星環的Slipstream組件。
很遺憾Spark 2.3仍然沒有對CEP提供原生支持。當然,CEP本身是一種綜合方案,你可以通過其他CEP組件像Esper、Sodbase CEP等與Spark結合起來滿足複雜事件的處理要求。我預計SQL on Stream和CEP在未來將成為流式計算的發展方向,這種綜合性解決方案無疑能滿足企業更多大數據場景的需求。
流式機器學習
Spark 2.3改進了MLlib的演算法、性能和擴展性,使得流式機器學習的能力更加豐富和完整。例如增加了API支持深度學習圖像分析用例、對Structured Streaming機器學習API增強等。實時流計算+機器學習並不是一個新故事,隨著人工智慧的熱潮,實時大數據場景下的數據科學正在迅速發展。例如交易所、證券公司的市場違規監控、異常交易監控、場外配置識別,銀行信用卡盜刷監控等等,均需要在數據流上通過決策樹、隨機森林、SVM等分類演算法或K-means等聚類演算法進行分析。
從技術發展和行業應用來看,大數據流式計算本身是一種綜合性解決方案,不僅需要技術框架本身提升實時模式、SQL、機器學習API的能力,也需要支持更豐富的應用場景。從Spark 2.3的新特性也能夠看出流式計算框架的這一發展趨勢。
金融科技精華文章
TAG:金融科技顧問 |