非死book崛起背后的數據天才
非死book 數據天才之一杰伊-帕瑞克
北京時間 2 月 5 日消息,目前,非死book 已經發展成為全球最大的社交網絡,擁有超過 10 億活躍用戶。九年的成長歷程中,非死book 不僅僅遇到了一般公司發展過程中常見的麻煩,也因為巨大的用戶數量級,遭遇更多常人難以想象的“大數據”。非死book 崛起之路上,究竟有哪些頂級數據天才、頂尖數據技術的支持呢?以下是文章全文:
杰伊·帕瑞克(Jay Parikh)的辦公桌,就放置在美國加州門洛帕克(Menlo Park)非死book 總部 16 號樓里,而他的行政助理吉尼·薩穆埃爾(Genie Samuel),就在離他不遠的地方工作。每隔一段時間,帕瑞克都會聽到薩穆埃爾咯咯地傻笑,而這就意味著,她很有可能又在 非死book 上傳了一些令人尷尬的照片,并且將帕瑞克標記了出來。通常情況下,帕瑞克自己 非死book 頁面上的通知,總會緊跟著她的笑聲浮現。而如果通知沒有如約而至的話,他就可能就要忙碌起來了。
帕瑞克是 非死book 基礎設施工程部門的副總裁,負責這個全球最大社交網絡的硬件和軟件。如果頁面上的通知,沒有在幾秒鐘之內直接快速出現,那么他就要仔細檢查自己的工作,然 后努力找到造成這種情況的原因了。麻煩的是,非死book 的基礎設施,已經擴展到全球四個不同的地方,四個大型數據中心,數十萬臺計算機服務器,除此之外,還有更多的軟件工具——深深吸一口氣,你也很難在不間斷 的情況下,說完它們的名字。而導致通知未能出現的原因,就埋藏在這個網絡的某一個角落中。
這就是為什么帕瑞克和他的團隊,會打造像 Scuba 這樣的工具。Scuba 是一個具有劃時代意義的軟件平臺,它可以幫助 非死book 的工程師們,及時對公司基礎設施數據進行挖掘分析。通常情況下,處理如此海量的數據是需要耗費些時間的。你甚至可能需要幾個小時的時間才能處理完所有的事 情。不過,對 Scuba 來說這就不再是問題,它是一種(in memory)內存式的數據存儲——將所有的數據,存儲在數百個計算機服務器高速內存中(而不是硬盤)——這意味著你可以更實時地進行數據查詢。
帕瑞克表示:“它讓我們能夠了解基礎設施工作情況——我們的服務器做得如何,我們的網絡表現如何,不同地軟件系統交互的如何。所以如果吉尼在一張照片中標記了我,而通知在幾秒鐘之內都沒有顯現,我們就可以查看 Scuba 來查找問題。”
九年之前,馬克·扎克伯格(Mark Zuckerberg)在哈佛的宿舍里推出了震驚世界的 非死book,而現在它已經一舉發展成了世界上最流行的社交網絡。扎克伯格和他的公司,建立了這個星球上最先進的工程業務,而有趣的是,他們這樣做的 主要原因實在只是由于迫不得已。非死book 面臨著一個獨特而艱巨的任務——服務 10 億個不同的用戶,并且要去處理 10 億個不同的消息、照片、視頻,以及很多其他的數據源——這一任務對的技術要求,比你想象的還要多。
是的,非死book 的工程大軍中,不乏像拉爾斯·拉斯穆森(Lars Rasmussen)這樣,創作了社交搜索工具 Graph Search 的天才,也有幫助美化工具、測試、部署應用程序的人。而現在,非死book 的硬件工程師,也擁有像阿米爾·邁克爾(Amir Michael)這樣的天才,他們負責服務器設計、存儲設備以及整個數據中心管理。
非死book 還打造了一個,由頂級工程師組成的數據處理團隊——這項工作在現代網絡中的重要性,已經日趨明顯。Scuba 僅僅只是 非死book 眾多“大數據”(Big Data)軟件平臺的冰山一角——利用分布式系統,讓數百上千個計算機上,可以協同分散處理一個單一的任務。
包括拉古·穆爾蒂(Raghu Murthy),艾弗里·清(,Avery Ching),約什·梅茨勒(Josh Metzler)在內的工程師們,打造了這些出色工具。它們不僅僅能夠排除 非死book 數據中心內的故障,還能幫助 Faccebook 數據科學家,分析 非死book 的在線應用的有效性,以及用戶的行為。
雖然谷歌的“大數據”平臺,仍然被公認為全網最領先的。但是隨著 非死book 開始拓展自己的網絡帝國,這家社交網絡巨頭并沒有被谷歌甩開太遠,而與谷歌不同的是,非死book 希望與全世界共享它的軟件。谷歌總是在分享自己的想法、思路,而 非死book 則是在分享自己的代碼,并希望其他人能夠好好利用。帕瑞克表示,“我們公司的使命,是讓全世界連接在一起,并且變得更開放。而在我們進行基礎設施建設的同 時,我們也在幫助促進達成這一使命。”
News Feed 的故障
非死book 數據團隊的創始人,叫作杰夫·哈梅巴赫(Jeff Hammerbacher)。與扎克伯格一樣,哈梅巴赫也曾經是哈佛的一名學生,不過他的專業是數學。在 2006 年春天接受 非死book 的工作之前,他曾在紐約貝爾斯登(Bear Sterns)擔任數據科學家一職。
哈梅巴赫認為 非死book 的數據操作靈感,要追溯到一天下午,那時他還在貝爾斯登,路透社的數據訂閱(data feed)突然出現了故障。而猶豫數據訂閱癱瘓,沒有人能進行交易。故障持續了一個鐘頭,而造成問題的原因,讓人有些哭笑不得
——負責這項任務的那個家伙,出門吃了個午飯。
哈梅巴赫突然意識到,這次嚴重的故障證明,數據工具的重要性絲毫不亞于數據專家。哈梅巴赫回憶說,“我突然發現了一個空白——需要創建一個完整的系統,采集數據,并且全部跑完整個數據模型——在每一個點上,盡可能優化系統。”
這基本上簡單地概括了他在 非死book 的工作。非死book 最初聘請他,是作為一名數據科學家——幫助通過信息分析理解公司運作。但是由于路透數據訂閱失誤,給他留下了深刻的印象, 哈梅巴赫更近一步。
他打造了一個團隊,管理整個公司的數據。這一團隊不僅分析數據,還創建并運行一個負責收集、處理數據的工具。
他剛加入 非死book 的時候,這家公司還在使用老舊的甲骨文(Oracle)數據倉庫處理信息。但是這樣的軟件設計,已經無法跟上 非死book 迅速發展的腳步。
哈梅巴赫還推薦 非死book 使用開源軟件平臺 Hadoop——Hadoop 可以將數據分散到商用服務器的海洋,這些機器將協同處理數據,讓它們變成真正有意義的信息。這有著很強的誘惑力,因為商用服務器的價格往往相對較低,而當 你的數據擴展變多的時候,你只需要添加更多的機器就可以輕松應對了。
雅虎利用 Hadoop 構建了網絡搜索引擎索引,但是哈梅巴赫和 非死book,則把它用作了幫助公司數據科學家的方法——能夠比甲骨文的數據倉庫,處理更大量的信息。
而 非死book 還研究了一個叫作 Hive(蜂巢)的產品——分析師可以應用這一工具,使用一種與結構化查詢語言(SQL)相似的語言,處理 Hadoop 上的數據(SQL 早在 20 世紀 80 年代以來,就得到了廣泛應用)。而 Hive 也很快發展成為了 非死book 主要的在線廣告性能分析工具。
2008 年秋天,哈梅巴赫離開了 非死book,并幫助創建了 Cloudera 公司。
未來的 Hadoop
現在,無論是 推ter 還是 eBay 或是 LinkedIn 在使用 Hadoop,而 非死book 則將這一分布式系統基礎架構上升到了新的極致。并且,Hadoop 正致力于將此服務平臺做到極致。基礎設施負責人杰伊·帕瑞克曾表示,非死book 運行著世界上最大的 Hadoop 計算機集群。非死book 的 Hadoop 集群中的一個,就涉及了超過 4000 臺機器,存儲著超過 100PB(petabytes)字節的數據,也就是數百萬 gigabytes 的數據。
這個集群是非常龐大,甚至已經超越了四個數據中心。非死book 使用 Hadoop 服務器來分配分布于各離散數據中心的數據空間,使每次的尋址過程自主進行。非死book 工程師拉古·穆爾蒂說。“我們的規劃總是目光長遠的,但是,我們必須通過這個過程,將所有數據遷移到新的地方去。”幾年之前,拉古·穆爾蒂還在完成斯坦福 大學 Ph.D. 項目的時候,被杰夫·哈梅巴赫;目前為止,他作為 非死book 大數據業務團隊的中堅力量,已工作四年有余。
非死book 信誓旦旦地表示絕不會再犯類似的錯誤,于是開始著手建立一個跨越多個數據中心的 Hadoop 集群。該項目由穆爾蒂負責,他曾經參與搭建雅虎(Yahoo)的 pre-Hadoop 分布式計算系統,并吸引到了哈梅巴赫的注意。如今,穆爾蒂已經參與過,包括 Hive 在內的許多 非死book 的重要項目的研發。但是,這還是有些許不同——Hadoop 的設計并沒有考慮多設備之上運行情況。通常情況下,由于需要服務器之間的高負載通信,集群被限制在了單一數據中心。
穆爾蒂和他的團隊成員,在整個 非死book 地基礎設施上,推出了一個叫作 Prism 平臺。典型的 Hadoop 集群,通常是由單一的“命名空間”(namespace)管理,但是 Prism 則開辟出多個命名空間,在一個相同的物理集群之上,創造了很多“邏輯集群”。
這些“命名空間”可以劃分給不同的 非死book 團隊,這樣每一個團隊都能夠得到屬于自己的命名空間,不過仍然全都在使用同一個數據集,而這個數據集可以跨越多個數據中心。這里的訣竅是,當一個團隊運行 一項工作的時候,它可以復制這項工作所需要的特定的數據,并且把它移進一個單一的數據中心。穆爾蒂表示,“我們將這些能力下放到獨立的小團隊,因為他們能 夠更好的了解網站特殊部分的獨特需要。”
根據穆爾蒂,這一系統理論上,可以擴展到無限多個服務器上。這意味著,非死book 不必再去擔心,需要打造另一個新的數據中心了。對于數據團隊的托斯來說,這意味著他能夠保證這一基礎設施平穩運行——這有一個額外的好處,他表示,“把整 個 Hadooop 集群放在一個數據中心中,讓我害怕極了,而 Prism 能夠幫助在這一點上提供幫助。”
Prism 只是眾多擴展 Hadoop 的努力中的一個。前任雅虎雇員艾弗里·清帶領的團隊,最近剛剛部署了一個新的叫作 Corona 的平臺,允許多個工作,在一個單一的 Hadoop 集群之上,而并不會導致崩潰。
穆爾蒂還幫助建造了一個叫作 Peregrine 的工具,能夠讓查詢 Hadoop 數據的速度比標準情況快很多。Hadoop 的設計初衷是一個“批處理系統”,這意味著,通常需要在運行作業的時候進行等候,但是和 Impala 相似的是(一個由哈梅巴赫和 Cloudera 創建的系統),Peregrine 可以讓平臺更接近實時。
非死book 并沒有與外界共享所有的軟件,但是卻分享了 Corona,而如果以此作為習慣參考,它很有可能會在未來分享更多的代碼。這就是為什么像艾弗里這樣的工程師會在這里工作,“在 非死book,我們比起他人更早地遇到問題,而其他人就可以從中受益,他們不需要重蹈覆轍,也不需要重頭再來。”
數據天才們的糖果樂園
Hadoop 是 非死book 數據操作的基石,這種情況還將延續很多年。但是隨著 Scuba 等工具的興起,非死book 也將轉投新的方向。
Scuba 是一款正在快速增長的內存數據儲存工具,設計的主要目的是為了極大的提高數據信息分析的速度。這款工具是由 非死book 公司的工程師團隊開發的,該團隊中包括一位在頂級編程網站 Top Coder 上,排名第一的工程師約什·梅茨勒。Scuba 在 非死book 的數據中心中運行,幫助該公司收集基礎設施的信息,并這些 log 壓縮在數以百計的服務器內存中。所以,這些數據可以被即時查詢到。
帕瑞克表示:“這就像 Excel 的數據透視表一樣。即使你在處理數以百萬計的數據,你也可以在亞秒級的響應時間里得到結果。”
是的,這個項目看起來似乎與 Peregrine 有些重疊——至少在一些部分上存在重復。但就像杰夫·哈梅巴赫指出的,這款工具是 非死book 精神的一部分。“非死book 做事的方式,就是尋找最短路徑的解決方案,而并非打造一款大而全的系統,來處理所有問題。”就像 非死book 的其他項目一樣,Scuba 是在公司級的黑客馬拉松(hackathon)中脫穎而出的。工程師遇到問題就自己解決,而非等到其他項目來幫他們解決問題。
這種情況在 非死book 中隨處可見。Santosh Janardhan 曾就職于 PayPal 和 油Tube,但是在他眼中,這些公司的工作相比之下非常微不足道。“非死book 擊敗了他們。對于我來講,在這里我感覺到了壓力。”工程師在這里希望解決更大的問題。“如果你是個技術迷,那么這里就像是糖果樂園。”