Google在新的內容索引系統中放棄MapReduce
有消息表明,Google在新型網絡內容索引系統——Caffeine中,將放棄以MapReduce為基礎架構的分布式計算平臺。
據Google高級主管Eisar Lipkovitz表示,在Caffeine中,Google的后端索引系統將從MapReduce上移除,并向Google新建的分布式數據庫平臺——BigTable上進行遷移。他表示,谷歌將于下月在USENIX研討會上提交一項新的文件討論系統。
據了解,從去年開始,Google就已經啟動了代號為“Colossus”的研發計劃,主要內容圍繞新的分布式文件系統——Caffeine進行研發。Caffeine將創建一個新的數據庫的編程模型,而這也意味著Google必須在BigTable上重建整個索引系統。
MapReduce完成歷史使命
必須看到的是,在Google的直接競爭對手——Yahoo、Facebook們對MapReduce飽含熱情進行研發投入的同時,Google卻宣布放棄MapReduce,不得不佩服Google的勇氣。
實際上,早在Caffeine建立之前,Google就建立了基于MapReduce的搜索索引系統。從本質上而言,這個索引是由序列的批處理操作組成的。它通過把對數據集的大規模操作分發給網絡上的每個節點進行運算,而每個節點會周期性的把完成的工作和狀態的更新報告回主計算。
Lipkovitz首先談到了Google基于MapReduce文件索引系統處理方式。“我們必須面對一個非常龐大的數據系統,在這之前,我們需要等待8個小時的計算時間我們才能夠得到計算的全結果,然后我們就會把它發布到索引系統中去。過去我們一直在不停地重復這個耗時耗力的工作。”
Lipkovitz進一步解釋了Google放棄MapReduce的原因,“MapReduce僅僅是一個批處理操作方式,”Lipkovitz解釋說,“一般來說你不能啟動下一階段的命令操作,直到你完成第一項操作。”
可以看到,Google之所以放棄MapReduce,是因為它并不能為谷歌提供它所想要的索引速度,特別是隨著實時檢索時代的到來,谷歌需要的是在幾秒內刷新索引內容,而非8小時。
實際上,在過去的幾年里,針對MapReduce的技術討論可謂是褒貶不一。
麻省理工學院的數據庫專家Mike Stonebraker認為,MapReduce的計算方法對于實時計算來說是很不合適的,是過時的。
“MapReduce就像是游擊隊員而非正規軍”,Lipkovitz表示,“如果你想基于Mapreduces建立分布式文件處理系統,如果你想實現更多的操作命令,那么必然會有錯誤發生。況且你并不能縮短處理的時間,這是Google選擇放棄Mapreduces的原因。”
Caffeine的處理原理
早前在谷歌的一篇博文中,谷歌提到了Caffeine的處理原理,“與我們的老索引技術相比,Caffeine能夠提供的新網絡搜索結果提高50%,最大程度收集我們提供的網絡內容。無論是新聞、還是博客或論壇,一經發布,用戶都能發現相關內容的鏈接,索引速度較以前有大幅提高。”
據了解,Google從2009年8月就開始測試Caffeine。當時,Google曾表示新索引技術將是自2006年以來的重大變革。速度和綜合性是新技術關注的目標。
Google曾表示,新系統需與網絡內容的爆炸性增長保持同步,過去兩年中,博客、視頻和社交媒體技術都蜂擁至網絡。借助Caffeine,Google將加快索引次數的更新,對一小部分網絡進行消化,而不是對整個網絡重新索引并更新索引內容。
Google軟件工程師卡莉·格蘭姆斯(Carrie Grimes)在博客中稱:“我們將把Caffeine列為未來考慮重點,不僅使之索引更多新結果,還要將之打造為適應網絡消息增長的速度更快、理解力更高的搜索引擎,為用戶提供相關度更高的搜索結果。”
關于“Colossus”計劃
“我們需要一個新的計算框架”,Lipkovitz說,這使工程師能夠在BigTable上編寫代碼,而該系統是基于“Colossus”建立的分布式存儲平臺——也被稱為GFS2。
“原有的基于MapReduce的文件系統,不能達到Google所需要的計算規模。”
據了解,“Colossus”是專門設計BigTable的開發計劃,基于這個原因,它并不針對傳統的分布式存儲平臺應用。換句話說,它是專為建立新的Caffeine搜索索引系統而用的,雖然它可能會在Google的其它內容所服務,但其并未跨越整個谷歌的基礎設施系統。
在Google的實時搜索引擎Instant的發布上,谷歌著名的工程師Ben Gomes表示,Caffeine并未在Instant架構中,但它的確有助于幫助把數據處理實現“分布”式搜索服務。
Lipkovitz同時指出,MapReduce并非意味著消亡,在Caffeine中,仍然有基于MapReduce的批處理應用,以及全球尚有其它的基礎設施。
而在Caffeine的誕生之前,索引系統是谷歌最大的MapReduce的應用程序。
原文鏈接:http://www.theregister.co.uk/2010/09/09/google_caffeine_explained/
關于MapReduce
在Google數據中心會有大規模數據需要處理,比如被網絡爬蟲抓取的大量網頁等。由于這些數據很多都是PB級別,導致處理工作不得不盡可能的并行化,而Google為了解決這個問題,引入了 MapReduce這個編程模型,MapReduce是源自函數式語言,主要通過"Map(映射)"和"Reduce(化簡)"這兩個步驟來并行處理大規模的數據集。Map會先對由很多獨立元素組成的邏輯列表中的每一個元素進行指定的操作,且原始列表不會被更改,會創建多個新的列表來保存Map的處理結果。也就意味著,Map操作是高度并行的。當Map工作完成之后,系統會先對新生成的多個列表進行清理(Shuffle)和排序,之后會這些新創建的列表進行Reduce操作,也就是對一個列表中的元素根據Key值進行適當的合并。
通過MapReduce這么簡單的編程模型,不僅能用于處理大規模數據,而且能將很多繁瑣的細節隱藏起來,比如自動并行化,負載均衡和機器宕機處理等,這樣將極大地簡化程序員的開發工作。MapReduce可用于包括“分布grep,分布排序,web訪問日志分析,反向索引構建,文檔聚類,機器學習,基于統計的機器翻譯,生成Google的整個搜索的索引“等大規模數據處理工作。Yahoo也推出MapReduce的開源版本 Hadoop,而且Hadoop在業界也已經被大規模使用。