,據國外媒體報道,當前,無數網站正面臨著如何高效管理海量在線數據的問題,而這一問題在5年前也同樣困擾著Facebook。但是,根據Facebook技術專家杰-帕里克(Jay Parikh)的說法,人們沒有必要過分擔憂這些問題。
Facebook的“三棱鏡”計劃
這是因為在過去幾年,許多互聯網的巨型公司(包括Facebook)搭建了大量的軟件平臺,并通過數以萬計的分布式服務器來解決在線信息爆炸的問題。此外,這些巨頭們還同任何有需求的公司分享其“大數據”處理軟件。
通過與雅虎合作,Facebook成為了最早涉足Hadoop技術的公司。Hadoop是一種無所不包的軟件平臺,可以用來處理和分析互聯網海量數據。雅虎把這一開源項目當作是一種有助于建立索引的工具,從而加強其自身搜索引擎的功能。但是,之后參與進來的公司開始把Hadoop加入到自己的互聯網項目中,并將其作為代碼優化的必備工具。
其結果是,Hadoop演化成了一種可以處理100PB數據的平臺(1PB=1024TB=1048576GB)。一直以來,帕里克專注于Facebook快速增長的軟硬件基礎設施建設。據他表示,“5年前,我們開始研發這些技術。當時,我們可以做的事情以及開發的速度都受到了一定的限制。此后,開源社區發生了巨大的變化,最重要的就是很多這些限制、障礙都被去除了。人們目前在互聯網上可以做的事情超出了我們當時的想象。”
但是現在,Facebook正開始著手處理更為棘手的數據雪崩問題(avalanche of data),因為現在又出現了新的限制需要突破。本周,在Facebook位于門洛帕克總部舉行的一次記者招待會上,帕里克披露了Facebook已經開發出兩種全新軟件平臺的消息,并表示Hadoop可以支撐的數據規模將進一步擴大。另外,Facebook還決定將這兩款軟件進行開源。
第一種平臺叫做“Corona(日冕)”,它可以讓你在數目龐大的Hadoop服務器之間運行大量的任務,并且不用擔心軟件錯誤會導致整個服務器簇出現崩潰。不過,第二種平臺更加有意義。它的名字叫做“Prism(三棱鏡)”,可以讓Hadoop服務器簇運行在全球范圍內的多個數據中心上,其規模將更加龐大。
帕里克表示,“‘Prism’可以讓我們任意轉移數據,不論我們是在俄勒岡州的普賴恩維爾、北卡羅來納州的克利夫蘭,還是遠在歐洲的瑞典。”
Hadoop的基本思想是基于10年前發表的兩篇研究論文。論文探討的是谷歌為了讓搜索引擎更好的運行而搭建的兩種大規模軟件平臺:GFS和MapReduce。GFS是谷歌文件系統的簡稱,它是一種在數以千記的服務器之間存儲數據的工具,而MapReduce則可以讓你將這些服務器的處理能力集中起來,從而將數據轉換成更為有用的東西。Hadoop的工作方式與此幾乎一樣——Hadoop文件系統(簡稱HDFS)負責數據存儲,而Hadoop MapReduce則負責數據處理。
這兩種Hadoop平臺已經幫助像雅虎和Facebook這樣的公司成功運行了許多年,但是它們并不完美。比如說,隨著Facebook用戶數超過9億人,Hadoop的缺陷也被相應放大。最為明顯的是,兩種平臺都因存在“單點故障”的問題而被廣為詬病。一旦主服務器出現問題,整個服務器簇都將隨之癱瘓,盡管這一時間可能不長。
最近幾月,Facebook通過AvatarNode項目排除了HDFS平臺上的單點故障問題。這一開源Hadoop項目的前身是一個名叫HA NameNode的解決方案,它可以大大提高系統的可用性。但是,MapReduce上的單點故障依然存在。而現在,憑借Corona平臺,Facebook徹底的解決了這一問題。
從傳統意義上來講,MapReduce使用的是單一“任務跟蹤器(job tracker)”來管理服務器簇上的任務。但是,Corona卻能生成多個任務跟蹤器。帕里克表示,“它讓我們可以在MapReduce基礎架構上跟蹤更多的任務。我們可以將系統的吞吐量進一步提高,從而讓Facebook內部更多的開發團隊和產品順利運轉。”
“在過去,一旦任務跟蹤器出了問題,一切工作都需要停下來,之后你必須要重頭開始才行,這使得整個業務都會受到影響。而現在,有很多迷你的任務跟蹤器在進行工作,所負責的工作也是相互獨立的。”
在硅谷,有一家名叫MapR的Hadoop創業型公司,托莫-希蘭(Tomer Shiran)是該公司最早的一批員工。他表示,MapR公司提供了一種具有類似優化措施的Hadoop版本,但是他表示Hadoop開源版本依然不支持多個任務跟蹤器。希蘭曾經使用過一個版本的Corona,據他表示這一平臺還可以讓用戶進一步加快MapReduce的工作速度。
在發布會上,Facebook的杰-帕里克就Corona給出了一些細節,但很明顯在Facebook內部已經開始使用了,而且成為了不可缺少的環節。帕里克表示,Facebook運行著世界上最大的Hadoop服務器簇,存儲的數據超過了100PB,每30分鐘可以處理的數據超過了105TB。
然而,Facebook上增長的數據不久就會超過這些服務器簇的承載能力。9億用戶無時無刻不在發布新的狀態更新、照片、視頻和評論等信息。這也就是帕里克的團隊創建Prism的原因,該軟件可以讓他們在多個數據中心之間運行一個龐大的Hadoop服務器簇。
帕里克表示,從傳統意義上講,你無法在不同的地理位置上運行Hadoop,因為網絡數據包無法以足夠快的速度在不同服務器上進行傳輸。他說,“Hadoop有一個很大的限制,即所有的服務器必須要彼此互聯。這一系統屬于非常緊密的耦合,如果這些服務器之間的傳輸延遲了幾十毫秒,整個系統都會面臨崩潰。”
但是,Prism會改變這一切。簡單來講,Prism會自動復制數據,并在不同地點的服務器之間傳輸數據。帕里克表示,“它使得我們可以在物理上將這種大規模的數據倉庫分割開來,但是依然可以以一種整體的眼光來管理這一系統。我們可以將數據倉庫任意移動,這取決于成本、性能或技術。我們將不再受到處理能力的限制,而在單一數據中心里經常出現這種問題。”
Prism讓人想起了谷歌過去一個叫做“Spanner”的平臺。Spanner的知名度并不高,谷歌一般將很多基礎工作放在系統的底層進行處理。但在2009年,谷歌在一次對外的聲明中卻把這一平臺描述成“一種存儲和計算系統,可以擴展谷歌所有的數據中心,并可以按照網絡限制和使用行為,自動傳輸和復制數據并進行計算。”這些網絡限制包括帶寬、丟包率、處理能力和“失效模式”。如果一個數據中心崩潰了,Spanner即可自動將數據轉移到另一個地點。
谷歌曾表示,這一平臺“會將谷歌所有機器上的資源自動進行分配”。在全球范圍內,谷歌總共擁有36個數據中心。
帕里克承認,Prism的基本思路同谷歌的Spanner差不多,但是他也很小心的表示,他并不是很了解Spanner以及它的用途。帕里克說,和Spanner類似,在數據中心Facebook崩潰時,Prism可以立即轉移數據。
MapR的托莫-希蘭表示,除了谷歌或Facebook,其他公司目前還不能使用具有這種功能的軟件。但是,希蘭也指出,雖然目前有許多公司運行著多個服務器簇,但是他表示其實并沒有這個必要。他說,“并不是所有公司都像谷歌那樣,需要處理如此龐大的數據。”
Facebook目前尚未真正部署Prism,帕里克拒絕表示什么時候會開始進行。但是,他卻說,在某種意義上,Facebook希望可以將這一平臺進行開源,針對Corona也可能會這么做。的確,現在沒有多少公司像谷歌或Facebook那樣需要解決在線數據雪崩的問題,但在未來卻存在這種可能性。帕里克說,“在未來,科技公司將面臨嚴峻的數據爆炸問題。”