如今隨便哪個網(wǎng)站都可能需要處理數(shù)量巨大的在線數(shù)據(jù),而Facebook早在五年前就已經(jīng)在處理這個問題了。Facebook技術牛人Jay Parikh說現(xiàn)在這些網(wǎng)站處理大數(shù)據(jù)比他們當年容易多了。
這是因為過去幾年中許多網(wǎng)絡公司(包括Facebook)都投入了很多精力去開發(fā)能夠在上萬臺服務器上分析處理線上數(shù)據(jù)的軟件平臺。當這些處理“大數(shù)據(jù)”的軟件完成之后,這些公司將成果公開了,任何感興趣的人都可以使用。
Facebook與yahoo一樣是開發(fā)推廣hadoop的急先鋒。Hadoop是一款很厲害的軟件平臺,用來處理和分析現(xiàn)代網(wǎng)絡產(chǎn)生的海量數(shù)據(jù)。Yahoo一開始開源這款軟件的時候是用作搭建自己搜索引擎所需的索引信息的,但是別的公司很快就將它用于自己的線上數(shù)據(jù)分析中,并且為了達到這個目的不斷的增強完善Hadoop。
這些努力的結果是Hadoop平臺可以處理超過100PB(即十億GB)的數(shù)據(jù)。“五年前當我們開始用這些技術的時候,(這個平臺)在計算的類型和速度上都還有很多的局限性。在開源社區(qū)的努力下,這些局限性和障礙都被解決了,所以人們可以比我們當年更快的完成任務。”Parikh說。他現(xiàn)在管理著Facebook運行所需的數(shù)量巨大的硬件和軟件架構。
但是現(xiàn)在的Facebook所面臨的數(shù)據(jù)量比過去還要大多了,現(xiàn)有的平臺像Hadoop處理這樣大的數(shù)據(jù)還是有很多局限性需要解決。在本周Facebook門羅園區(qū)總部的一個有記者參與的報告中,Parikh透露公司已經(jīng)開發(fā)了兩個比Hadoop伸縮性更好的新平臺,而且Facebook打算將兩個平臺都開源出來。
第一個平臺名字叫做Corona,它允許你在許多Hadoop服務器上運行大量的任務,不需要擔心整個集群(被單個任務搞)崩潰。另外一個更有吸引力,叫做Prism,能夠運行一個超大的、能夠將全球數(shù)據(jù)中心都連起來的Hadoop集群。
Parikh說這個系統(tǒng)能夠“讓數(shù)據(jù)按照我們的要求任意移動,不管是俄勒岡州的普賴恩維爾、北卡州的Forest市、還是瑞典。”
Hadoop建立在十年前Google的兩篇描述大規(guī)模軟件平臺(原理)的論文之上,Google用這兩篇論文中的技術構造了GFS和MapReduce平臺。GFS是谷歌文件系統(tǒng)的簡稱,能夠將數(shù)據(jù)分布存儲在上千臺服務器上;MapReduce讓你利用所有服務器的計算資源進行計算得到想要的結果。Hadoop的工作原理與之類似,對應GFS和MapReduce的叫做HDFS和Hadoop MapReduce。
這兩個Hadoop平臺已經(jīng)Yahoo和Facebook等公司用了幾年,但是它們不完美,尤其是在Facebook的用戶數(shù)超過9億之后這兩個系統(tǒng)的問題越來越明顯。最引人注目的問題就是“單點錯誤”特性,即如果管理集群的主服務器掛掉了,整個集群就(至少暫時的)掛掉了。
最近幾個月,F(xiàn)acebook開發(fā)了一種叫做AvatarNode的技術來避免HDFS平臺的單點錯誤,而Hadoop開源社區(qū)實現(xiàn)了一個類似的HA NameNode方案,提高了可用性。但是MapReduce還是存在單點失效的問題?,F(xiàn)在Facebook通過Corona解決了這個問題。
傳統(tǒng)上MapReduc使用一個單獨的“任務跟蹤器”來管理服務器集群中的任務,而Corona創(chuàng)建多個任務跟蹤器。Parikh說這幫助Facebook在同樣的MapReduce平臺上執(zhí)行的任務數(shù)量大大增加,總體吞吐量提高了,從而更多的小組和產(chǎn)品可以在集群上運行任務。
過去如果任務跟蹤器出現(xiàn)了問題,就會導致系統(tǒng)中所有的任務都死掉了,逼得你把所有東西都重啟一遍。只要有一個服務器故障了整個系統(tǒng)都會受到影響?,F(xiàn)在系統(tǒng)中有了很多迷你任務跟蹤器,只負責各自的任務。
Tomer Shiran是硅谷創(chuàng)業(yè)公司MapR最早的一批員工,這家公司發(fā)行的Hadoop版本中包含了類似的功能,他同時指出目前開源版本的Hadoop中還沒有類似的多任務跟蹤器實現(xiàn)。他見過某個版本的Corona,覺得在這個平臺上MapReduce任務的啟動速度也快了很多。
關于Corona平臺Jay Parikh說的很少,但是顯然這個系統(tǒng)已經(jīng)在Facebook內(nèi)部使用了——而且確實非常需要。Parikh說Facebook運行著世界上最大的Hadoop集群,包含超過100PB的數(shù)據(jù),半個小時就能處理105TB的數(shù)據(jù)。
但是這個集群就快滿足不了Facebook了。9億用戶不斷的更新狀態(tài),傳照片、視頻,寫評論——數(shù)據(jù)增長的速度你懂的。這就是Parikh跟同事構建跨數(shù)據(jù)中心的集群Prism的原因。
傳統(tǒng)上由于數(shù)據(jù)中心之間的網(wǎng)絡不夠快,Hadoop計算一般不在地理上分離的數(shù)據(jù)中心之間運行。“Hadoop的一大缺陷就是所有的服務器都必須緊挨著,”他說“系統(tǒng)的耦合性非常高,如果服務器之間的(數(shù)據(jù)傳送)延遲增加幾十微秒,整個系統(tǒng)就會慢到爆。”
有了Prism就不一樣了。簡而言之它的特長就是能夠根據(jù)需要在不同的網(wǎng)絡計算節(jié)點之間自動的復制和傳送數(shù)據(jù)。“這使得我們能夠建立多個分離的數(shù)據(jù)中心但是在系統(tǒng)中看到的還是一個系統(tǒng),”他說。“我們可以根據(jù)成本、性能、技術因素來移動數(shù)據(jù)……我們已經(jīng)不再局限于單個數(shù)據(jù)中心的計算能力了。”
Prism讓人聯(lián)想到谷歌的Spanner平臺。關于Spanner的消息不多——谷歌在其基礎架構的設計實現(xiàn)上比較低調(diào)——但是在09年求點,谷歌公開描述這個系統(tǒng)為“一個存儲和計算系統(tǒng),利用了我們所有的數(shù)據(jù)中心(的磁盤和計算能力),根據(jù)資源的約束和使用模式自動的進行數(shù)據(jù)的復制和計算的重分布。”
谷歌宣稱這個平臺提供“在任何服務器上自動分配資源的能力”,涵蓋了全球36個數(shù)據(jù)中心。
Parikh承認Prism跟Spanner類似,但是他也謹慎的指出對于Spanner他知道的不多。而且Prism可能在一個數(shù)據(jù)中心當?shù)舻臅r候即時的將數(shù)據(jù)重新分布(到別的中心中去)。
Tomer Shiran說這類平臺只在谷歌或Facebook內(nèi)部使用,還沒有開放的實現(xiàn)。但是他也指出,目前也沒有多少公司需要這么高級的東西,“還沒有公司(數(shù)據(jù)量)達到了谷歌處理的數(shù)據(jù)的量級“。
Facebook目前還沒有實際的部署Prism,Parikh也沒有給出明確的時間。但是他說到那時可能就會開源了。Corona系統(tǒng)也會開源。確實現(xiàn)在還沒有公司需要處理像谷歌和Facebook這么多的線上數(shù)據(jù),但是在未來可能會的。“他們需要面對下一波數(shù)據(jù)量級增長的挑戰(zhàn),”Parikh說。