Twitter程序員推動Hadoop開發(fā)進程
為了分析海量元數(shù)據(jù)和信息,除了部署Cascading架構(gòu)以簡化MapReduce部署外,Twitter還選擇了Hadoop。
由于Twitter的數(shù)百萬用戶能夠彼此間實時分享***新聞、想法、意見,Twitter成為了目前***的通信平臺。所有這些活動都為Twitter帶來了海量的元數(shù)據(jù),而這些元數(shù)據(jù)對于Twitter來說是一筆寶貴財富。為了分析這些包含了1.75億多條日常推文和廣告活動的拍字節(jié)級數(shù)據(jù),Twitter的分析團隊選擇了一個大型的Hadoop商店。這些分析工作的目標是,提升企業(yè)為終端用戶和廣告商所提供服務(wù)的品質(zhì)。
開發(fā)人員利用Hadoop將MapReduce工作定義為允許一個詳細規(guī)定的任務(wù),尤其是分析任務(wù),能夠在跨服務(wù)器環(huán)境下對大量數(shù)據(jù)進行分析。對于Twitter而言,他們所面臨的一個重大挑戰(zhàn)是,MapReduce編程需要一些除Java之外的特殊技能。開發(fā)人員要重新考慮他們的編碼方式,而這正是Hadoop的優(yōu)勢所在。此外,Twitter的團隊需要能夠執(zhí)行更為復雜的計算、機器學習和線性代數(shù)。對于普通的開發(fā)者來說,不經(jīng)過必要的培訓根本無法在MapReduce上進行編程。
駕馭Hadoop
對于任何開發(fā)人員來說,他們都希望復雜的統(tǒng)計功能能夠變得更為易用,為此Twitter選擇了Current的Cascading架構(gòu),因為該架構(gòu)專門考慮到了創(chuàng)建大數(shù)據(jù)應(yīng)用這一問題。
Cascading提供了一個針對Hadoop的更高級的抽象層,允許開發(fā)人員用不同的語言迅捷地創(chuàng)建可在Ruby、Scala等JVM上運行的復雜任務(wù)。這實際上打破了技術(shù)壁壘,因此讓Twitter的開發(fā)人員能夠更為廣泛地使用Hadoop。
目前,Cascading已經(jīng)能夠讓Twitter的開發(fā)人員用他們自己喜歡的編程語言創(chuàng)建復雜的數(shù)據(jù)處理工作流,并且能夠很方便地升級以處理數(shù)以拍計的數(shù)據(jù)。Twitter已經(jīng)與Concurrent簽署了一份捐贈協(xié)議。這樣一來,Twitter的開源貢獻內(nèi)容可以很方便地應(yīng)用在Cascading的項目中。
深度使用
目前Twitter的三個團隊正在結(jié)合編程語言使用Cascading。具體的分工是,營收團隊使用的是Scala,發(fā)布者分析團隊使用的是Clojure,分析團隊使用的是Jython。營收團隊可以通過分析廣告內(nèi)容和Twitter話題等因素幫助廣告商決定哪些廣告收效***,以幫助增加客戶轉(zhuǎn)化率。他們編寫了針對Cascading的開源Scala應(yīng)用程序接口Scalding,因此開發(fā)人員能夠在Scala上編程并在Hadoop上運行它們。
發(fā)布者分析團隊可以幫助網(wǎng)站管理員搞清楚Twitter用戶是如何處理涉及品牌、網(wǎng)站和網(wǎng)絡(luò)公眾人物的信息。他們創(chuàng)建并公布了以Clojure為基礎(chǔ)的語言——Cascalog的源代碼。Cascalog能夠?qū)ascading作為任務(wù)執(zhí)行引擎。
分析團隊的任務(wù)則是理解Twitter用戶的活動。他們需要一種方法,以便更容易地對跟在其他用戶之后的用戶、或是跟在同類用戶之后的用戶進行精密而復雜地分析。他們?yōu)榇藙?chuàng)建了PyCascading,以控制來自Python的所有數(shù)據(jù)處理工作流。
在這些案例中,Cascading能夠讓開發(fā)人員避開編寫、優(yōu)化和執(zhí)行MapReduce任務(wù)的煩擾。同時,它們還允許每個團隊高效而迅捷地傳輸他們所需的復雜信息與功能。這些結(jié)果能夠提供重要的洞察力,幫助Twitter持續(xù)提升自己的服務(wù)品質(zhì)。