大數據那些事(5):沉沒的微軟以及Dryad

我的微信公眾號:飛總的IT世界面面觀

在這場大數據的革命里,有的公司耀眼了,賺到了名。有的公司做了雷鋒,賺到了關注度。有的公司起了個早,在內鬥中趕了個晚集。還有的公司,比如微軟這個上個時代的領軍人物,撲通了幾聲,迅速被淹沒在了大浪裡面,沉沒了。

然而我們必須說,作為老司機,微軟還是非常有鑒別能力的,什麼東西是好東西,什麼是爛東西。換句話說什麼該抄什麼應該拋棄,在我有限的接觸的幾個公司譬如IBM,Yahoo來說,至少那個MapReduce耀眼橫行的年代裡,微軟的某些決定顯得很另類,然而未必就錯了。

微軟大概是在2007年前後決定大規模的投資search做BIng的,這可能一半是因為微軟在自己的大本營上被Google撩撥的不行了。Google在Kirkland開了個office明目張胆的開始在微軟挖人,又大張旗鼓的開始做Google Doc。網上有個視頻是說當又一個微軟的Fellow離開的時候和微軟前CEO巴爾默告別,巴爾默問對方去哪,還說,千萬不要又是Google。結果對方說很不幸的就是Google。於是巴爾默砸椅子了。這個視頻我是聽另外一個人傳話給我的,自己沒看到過。

那個先開始叫Windows Live Search,後來改名叫Bing的產品,在外名聲不顯,從未對Google真正構成威脅。然而我必須說,從微軟內部來看,這個投資的意義極其的巨大。因為投資Bing,微軟掌握了大規模data center的建設和管理能力,開發出了幾個對微軟這個只會做單機版軟體的公司有著飛躍性意義的平台,掌握了A/B testing的實驗平台,學會了大規模數據分析的能力。其中有一些東西則成為了Windows Azure的基礎。可以說,沒有Bing的錢砸進去,微軟並沒有辦法順利的從一個軟體公司過度到一個雲計算的公司。如此算一筆賬,虧了還是賺了確實是不好說。同時代的IBM和Oracle顯然就沒有這樣的幸運。至今依然在苦苦的掙扎中不知道能雲成什麼鬼樣。

這裡我們要介紹一個人Michael Isard。這個作為在這個特定時期對微軟非常有意義的人,值得去大書特書一下。Michael Isard,微軟矽谷研究院的高級研究員,早年做計算機視覺出身。按照以前我看他在微軟的主頁上的說法,他在2007年前後幾年的時候和微軟的Search有著非常的緊密的合作,參與了微軟Search的若干個特別重要的infrastructure項目的開發,比如Autopilot和Cosmos。

這兩個項目其實現在都不是秘密的項目了,所以我就可以自由自在的拎出來講。其中Autopilot的早期情況可以參考他的論文:Autopilot: Automatic Data Center Management。從標題上看大家就知道Autopilot是幹什麼的了。Autopilot後來有了非常長足的發展,並成為了windows azure下面管理data center的基礎。而Cosmos是微軟的大數據計算的平台。我一度在此team待了5年。關於Cosmos的詳細情況在以後講到相關話題的時候我們會展開敘述。

順便說兩個八卦,都是和微軟的現任CEO Satya有關的。第一個八卦是澄清一下大家長久以來的誤會。Satya一直以來都是受到微軟上層非常信任的人。在執掌search也就是後來的Bing的時候,作為Senior Vice President,Search和Ads的大頭,兩個VP都是直接report給他的。而陸奇在2008年登陸微軟的時候,雖然名義上是Online Service Division的President,實際上來說,只有不值一提的MSN是直接彙報給陸奇,其他都是彙報給Satya,然後Satya再彙報給陸大大。從這個角度看,陸大大是被架空的。所以雖然說有所謂的上下級關係,到底誰更獲得高層的信任其實可見一斑。後來Satya去了Server and Tools成了President,陸大大直接接手了Search和Ads的彙報,中間那一層並沒有其他人來接替。因此坊間傳聞陸大大是上級然後變成了下級不爽,多半不靠譜。在微軟內部,Satya獲得高層的信任一直以來都高於陸大大。當初把陸大大搞過來也是想促成Yahoo的deal,確保Bing有三分之一的traffic。至於誰是名義上的頭,誰是實際上的老大,其實很容易看明白的。

第二個八卦是Satya上台以後的一次layoff,做出來的決定是把Microsoft Silicon Valley Research Lab給關了,這次關掉整個研究院的事情發生在2014年,造成了非常惡劣的影響。我們的主角Michael Isard也被裁員了。這些被裁員的人據說當天Jeff Dean帶著Google的HR就守在門口給簽了Google研究院的合同。而最新的公開資料顯示Michael Isard去做TensorFlow了。果然牛人是在什麼地方都能發光發熱的。至於有關這個關閉整個矽谷研究院的決定,則涉及到了微軟另外一位華人高管沈向洋沈大大。最近的微軟大事裡面除了陸大大的離職,還有沈大大接管了MSR,Bing以及機器人等等的研發。沈大大在接受採訪的時候坦然承認了這是當年他做的決定。至於個中緣由,他不方便多說。

提這個人是因為他發表了Dryad這篇論文。Dryad這個東西最終被微軟用到了一些產品里。作為一個比MapReduce更通用,也同樣更底層的系統,Dryad在這個時代里其實是被大大的忽略了。另外說一句,Hortonworks主導的開源項目Tez的原型就是Dryad系統。大概是2013年左右,在Cosmos裡面負責開發Dryad相關的東西的一個印度人跳槽去了Hortonworks,我想這可能和之後Hortonworks決定做Tez有一定的關係。

Dryad的基本思想並不難理解,說白了就是一個有向無環圖的執行引擎,其中圖裡面的每個點表示了一個計算,而邊則表示了數據流,邊的方向決定了數據的流向。系統可以通過這個圖來按照一定的調度儘可能的讓更多的東西並行執行起來。Dryad的另外一個特點是,圖上指定的邊可以在運行時候進行展開,舉個例子來說,套用MapReduce吧。程序運行前的圖可以是一個Mapper和一個Reducer,但是當runtime發現數據量比較大的時候,它可以動態的切成若干份,從而改變圖的結構和連接,獲得更多的並發度。最初實驗室裡面的Dryad其實缺了很多東西,所以只能穩定的運行在幾百台機器上。而經過Cosmos組不斷增強的Dryad層,可以擴展到幾萬台機器上。MapReduce里有的監控和自動重試功能在這個系統裡面也同樣的實現了。

系統的細節我就不展開了,大家可以看論文去。但是作為和MapReduce比較一下還是有必要的。其實Dryad就是一個DAG的執行引擎,學到了Google作為MapReduce infrastructure那個部分的核心。在一個海量文件系統的支持下,做到了對系統的自動監控,運行和重試。另外一個方面,這個系統並沒有局限成Map Shuffle Reduce這三個階段,故而提供了很多的靈活性。

但是我們需要注意到的是,這個系統對用戶的要求太高了,需要給每個節點定義計算,給每條邊定義數據流向,和MapReduce比起來,就像是SQL和彙編的區別。所以這個系統其實是沒有那麼強的可用性的。不僅僅如此,因為用戶要負責的東西很多,所以用戶錯誤也可能導致很多的job 失敗的問題。DryadLinQ和SCOPE就是在這樣的背景下誕生的兩個項目。目的很大程度上都是為了提高用戶的易用性。

額外說一句MapReduce這個框架裡面的Shuffle其實是不公開給用戶的,當然,你非要override partitioner也是可以的。然而不知道大家是不是注意到Google論文裡面的一個細節。Google的Shuffle階段是Sort based。作為一個長在關係代數下的生是關係資料庫的人,死是關係資料庫的死人的我,第一次讀這個論文的時候在心裡大大的嘲笑了一把Google這個傻13.這種情況下不就是一個GroupBy么。關係資料庫的世界裡玩了幾十年了,Hashing明顯是比Sorting更好的一個選擇么。只不過Google沒有告訴大家,在數據規模足夠大的時候,Hashing會產生很多很多的小文件,因此,它的效率其實不如Sorting。Cosmos裡面最後還是Sorting和Hashing都有,並且默認是Hashing,因為解決了產生大量小文件的問題。

推薦閱讀:

MapReduce初窺 · 一
分散式機器學習的故事:LDA和MapReduce
技術分享丨關於 Hadoop 的那些事兒
MapReduce Lab03 筆記

TAG:大数据 | MapReduce | 微软Microsoft |