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