Twitter 推出一個(gè)開源系統(tǒng),旨在減低批處理和流式處理之間的交換,做法是把二者組合在一起成為一個(gè)混合系統(tǒng)。Twitter 用Hadoop做批處理,用Storm做流式處理,混合系統(tǒng)名為Summingbird。Summingbird沒法做每一件事,不過對(duì)完成其目標(biāo)任務(wù)還是很方便的。
Twitter 博客發(fā)文公布了Summingbird,公布細(xì)節(jié)的技術(shù)成分很大。但是,如果你想想Twitter 如何運(yùn)行的,本質(zhì)問題是很容易理解的。像Trending Topics(話題趨勢(shì))和搜索一類的服務(wù)需要實(shí)時(shí)數(shù)據(jù)處理才會(huì)有用。但是最終還是需要準(zhǔn)確性或許還要做一些深度分析。Storm有點(diǎn)像醫(yī)院里的治療類選科,而Hadoop則是長(zhǎng)期患者護(hù)理。
以下是Summingbird項(xiàng)目Wiki的描述,在高層次上解釋了Summingbird如何運(yùn)作,解釋得不錯(cuò),具體實(shí)現(xiàn)當(dāng)然會(huì)稍微復(fù)雜一點(diǎn):
Summingbird的混合模式可以讓 Hadoop處理大多數(shù)的數(shù)據(jù),并且可以從Manhattan一類的只讀存儲(chǔ)得到服務(wù)。Storm 則只處理那些Hadoop沒有處理過的數(shù)據(jù),那些限于延遲窗里的數(shù)據(jù)。這些實(shí)時(shí)數(shù)據(jù)來自數(shù)據(jù)存儲(chǔ)。實(shí)時(shí)層的誤差是有限度的,原因是Hadoop 最后會(huì)對(duì)原來的同一數(shù)據(jù)進(jìn)行處理,因而會(huì)理順引進(jìn)的誤差。
此類混合系統(tǒng)實(shí)際上越來越常見,很多公司認(rèn)識(shí)到他們沒辦法單靠Hadoop在實(shí)時(shí)世界生存。我們以前報(bào)道過不少公司——其中有Gravity,LinkedIn和Netflix——他們也做過類似的東西。Summingbird也許有點(diǎn)不太一樣,原因是Summingbird要處理的數(shù)據(jù)同時(shí)來自Hadoop和Storm,和管道式地處理幾個(gè)不同的系統(tǒng)不一樣。但是網(wǎng)絡(luò)公司卻需要方法保證不會(huì)用速度來換取準(zhǔn)確度,或反之。
我們沒找到Twitter 的人來特別討論Summingbird,不過我們的數(shù)據(jù)陣容還是很引人注目的,也許可以深刻說明這東西為什么重要。他們來自PayPal、MailChimp和LinkedIn這些地方,也有的是來自像Yahoo和NSA這樣的地方的企業(yè)家。
再多講一點(diǎn)點(diǎn)Summingbird。Twitter 實(shí)際上將其描述為“Streaming MapReduce”,原因是Summingbird的重點(diǎn)是作業(yè)聚合。網(wǎng)上有Twitter 的Sam Ritchie六月做的一個(gè)演講稿,大家可以看看。Yahoo的開源項(xiàng)目 Storm-YARN其實(shí)是在Hadoop群里面運(yùn)行Storm,可以讓Storm訪問基于Hadoop的數(shù)據(jù)存儲(chǔ),也值得看看。