推薦序
2009 年的時候,Netflix 公司舉辦了一個叫作Netflix Prize 的推薦演算法比賽。這個比賽匿名公佈了Netflix 五十萬使用者對近兩萬部電影的一億個評分資料,希望參賽者能夠開發出更好的推薦演算法,以加強推薦系統的品質。這個比賽的獎金有一百萬美金,看似很多,但和一個更好的推薦演算法為Netflix 帶來的效益相比,實則九牛一毛。
豐厚的獎金和Netflix 提供的真實資料吸引不少的參賽者,其中也包含了來自加州大學柏克萊分校(UC Berkeley)的博士生Lester Mackey。Lester 師從機器學習領域泰斗Michael Irwin Jordan,在一個AMPLab 的大數據實驗室裡進行博士研究。AMPLab 和大多數學術界實驗室不同的地方,在於實驗室內由多名教授和他們帶領的學生一起合作,研究人員來自不同的領域,包含機器學習、資料庫、電腦網路、分散式系統等。當時,要想加強演算法研究反覆運算的效率,需要利用多台機器的分散式建模。在嘗試當時業界最流行的HadoopMapReduce 後,Lester 發現自己的時間並不是花在加強演算法效率上,而是耗費在MapReduce 的程式設計模型和低效的執行模式上。因此,他向實驗室另一名進行分散式系統研究的學生Matei Zaharia 求助。
當時年紀輕輕的Matei 在業界已經小有名望。他在雅虎和Facebook 實習期間做了很多Hadoop 早期的奠基工作,包含現今Hadoop 系統內應用最廣的fair scheduler 排程演算法。在和Lester 的腦力激盪中,Matei 歸納了Hadoop MR的不足,開始設計第一個版本的Spark。這個版本完全是為Lester 訂製,只有幾百行的程式,卻讓Lester 可以高效率地進行分散式機器學習建模。
Lester 所在的The Ensemble 團隊最後和BellKor's Pragmatic Chaos 設計了在效率上並列第一的演算法,可惜因為晚20 分鐘送出,與一百萬美金獎金失之交臂。5 年後,Lester 和Matei 都變成了學術界和業界傑出的人物。Lester 成為史丹佛大學電腦系的教授,帶領學生攻克一個又一個機器學習和統計的難題。Matei 成為麻省理工電腦系的教授,也是Databricks 公司的CTO。
2009 年之後的4 年裡,AMPLab 以Spark 為基礎展開很多不同的學術研究專案,其中包含了Shark 和GraphX,還有Spark Streaming、MLlib 等。4 年裡隨著Hadoop 的發展,Spark 也逐漸從一個純學術研究專案發展到開始有業界敢嚐鮮的使用者。
2013 年, 包含Matei 和我在內的Spark 核心人員共同創立Databricks 公司,立志於加強Spark 的速度發展。過去兩年,Spark 的發展超越了我們所有人的想像。一年半以前Spark 還是一個連監控介面都不存在的系統,很難放進生產線部署。而一年半後的今天,它已經變成整個大數據生態圈和Apache Software Foundation 內最活躍的專案,活躍程度遠遠超出了曾經只能望其項背的Hadoop。
很多高科技和網際網路公司也都有了Spark 的生產作業,不少使用者直接減少在Hadoop MapReduce 上的投資,把新的專案都傳輸到Spark 上。
今天正好是Databricks 公司成立一年半,也是Spark 1.2 版本第一個release candidate 發佈的日期。Spark 的高速發展導致中文資訊的脫節。這本書深入淺出地介紹Spark 和Spark 上多個重要計算架構,希望它的問世可以更進一步地普及Spark,增進Spark 社區的發展。
辛湜 Reynold Xin
Berkeley, CA