觀點:流式計算推動實時處理商業變革
在這一年,我們看到眾多廠商工作重點主要是圍繞整合Hadoop或NoSQL數據處理引擎以及改善基本的數據存儲。Hadoop最成功的一點就是其采用了MapReduce。MapReduce是一種處理超大型數據集并生成相關執行的編程模型,MapReduce的核心思想主要是借鑒了函數是編程語言以及矢量變成語言里的特性。
現今包括Microsoft、IBM、Oracle、Cloudera、MapR等眾多廠商相繼推出了與自身相結合的Hadoop產品。例如Oracle NoSQL Database,其是Oracle在全球大會上發布的Big Data Appliance的其中一個組件,Big Data Appliance還包括了Hadoop、Oracle數據庫Hadoop適配器、Oracle數據庫Hadoop裝載器及R語言的系統。
同時在本月微軟也公布了針對Windows Azure的基于Apache Hadoop的預覽發行版,據微軟透露其可使Hadoop應用程序在幾小時即可部署完成,而以往這需要數天。而這種趨勢在未來一年還會持續下去。正如我們所看到的,Hadoop技術在眾多領域正廣泛得到部署。
但Hadoop也面臨一些相當棘手的狀況,眾所周知,Hadoop的批量化處理是人們喜愛它的地方,但這在某些領域仍顯不足,尤其是在例如移動、Web客戶端或金融、網頁廣告等需要實時計算的領域。這些領域產生的數據量極大,沒有足夠的存儲空間來存儲每個業務收到的數據。而流計算則可以實時對數據進行分析,并決定是否拋棄無用的數據,而這無需經過Map/Reduce的環節。
從實時計算的角度看,Yahoo!的分布式流計算平臺S4則要比Hadoop更具優勢。MapReduce系統主要解決的是對靜態數據的批量處理,即當前的MapReduce系統實現啟動計算時,一般數據已經到位(比如保存到了分布式文件系統上)。
而流式計算系統在啟動時,一般數據并沒有完全到位,而是源源不斷地流入,并且不像批處理系統重視的是總數據處理的吞吐,而是對數據處理的latency,即希望進入的數據越快處理越好。
Yahoo!S4的設計大量借鑒了IBM的Stream Processing Core(SPC)中間件的設計。只是SPC采用的是Subscription Model,而S4結合了MapReduce和Actors Model。而簡單的編程接口;高可用+高可擴展;盡力避免Disk IO,盡量使用Local Memory,以便減少處理latency;使用去中心化和對稱架構,所有的節點的責任相同,方便部署和維護;功能可插拔,使得平臺通用化的同時,做到可以定制化以及設計要科學、易用和靈活是Yahoo!S4的設計目標。
而Storm作為Twitter公司實時數據處理平臺也受到廣泛關注(Twitter也在9月19日圣路易斯市舉行的Strange Loop會議上公布其源代碼)。Storm的發展勢頭相當強勁,Twitter開發的相應工具已使其功能變得更加強大。
Storm的作用主要在以下三個領域:信息流處理(Stream processing)Storm可用來實時處理新數據和更新數據庫,兼具容錯性和可擴展性;連續計算(Continuous computation)Storm可進行連續查詢并把結果即時反饋給客戶端。比如把Twitter上的熱門話題發送到瀏覽器中;分布式遠程程序調用(Distributed RPC)Storm可用來并行處理密集查詢。Storm的拓撲結構是一個等待調用信息的分布函數,當它收到一條調用信息后,會對查詢進行計算,并返回查詢結果。舉個例子Distributed RPC可以做并行搜索或者處理大集合的數據。
另一個知名的分布式流式系統是Brandeis University、Brown University和MIT合作開發的Borealis,Borealis由之前的流式系統Aurora、Medusa演化而來。目前Borealis系統已經停止維護,***的Release版本停止在2008年。
Borealis具有豐富的論文、完整的用戶/開發者文檔,系由是C++實現并運行于x86-based Linux平臺。同時系統是開源的,且使用了較多的第三方開源組件,包括用于查詢語言翻譯的ANTLR、C++的網絡編程框架庫NMSTL等。
Borealis系統的流式模型和其他流式系統基本一致:接受多元的數據流和輸出,為了容錯,采用確定性計算,對于容錯性要求高的系統,會對輸入流使用算子進行定序。
隨著大量實時計算需求的增加,分布式流式計算將會成為分布式計算的下一個主要研究重點,將會成為類似Hadoop這類MapReduce框架的有力補充。

























