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