友情序言
獲悉Spark最近要出書了,突然有很多感慨,心想不如寫點東西出來,算是友情支援,也算是個人總結。觀點盡量中立,內容盡量煽情。
本著牛哥“站在巨人的肩膀上”的理論,在捧Spark之前,要先捧一下她的前輩們。大資料系統中最核心的莫過於分散式處理架構,因為架構負責job執行的方方面面,如job分解、task調度與執行、錯誤容忍、資料流等等。較早(04年發表)也是最重要的貢獻是Google的MapReduce架構,她將函數式編程思想引入到分布式資料處理中,僅僅用兩個函數(map和reduce)就解決了一大類的大資料批處理問題,使用者也再也不用擔心分布式帶來的諸多系統層面問題。MapReduce缺點也很明顯:處理流程過於固定,不支援迭代,job執行時間一般較長。MapReduce的開源實現Hadoop在08年的時候贏得了TeraSort冠軍,開始佔領市場,到今天,整個生態圈已經龐大到有些臃腫。微軟在沉寂了幾年後,08年推出了與MapReduce直接競爭的Dryad,以DAG型的資料流取代了MapReduce固定的資料流,更複雜但功能更強。次年的DryadLINQ將更多的函數式思想(其實很多來源於C#的LINQ)引入到分布式編程範型中,到今天看來也非常先進。好了,該Spark登場了,Spark最大的貢獻在於她的資料模型RDD,以前的架構都把資料當成原始的KV索引值對,整個處理流程中不同階段的資料沒有明確關係。RDD給出了明確的資料邏輯關係,建立了資料依賴及資料模型,最後也能方面地將資料模型轉化為具體的處理任務。Spark的編程範型其實借鑒了DryadLINQ的範型。至於記憶體cache、迭代計算等特性,其實把MapReduce或Dryad的實現機制改動一下也可以做到。當然這些特性對減低job執行時間很重要,也是Spark的賣點。對了,EPFL的Scala語言也功不可沒,名字上就很scalable。她的關鍵詞是學院派、函數式、靜態類型、物件導向、Java相容。多數人認為Scala是Java的接班人。如果將Spark比作孫悟空,Scala就是他的金箍棒。
學術噴完了,噴一下出書的問題。不得不說,當一個東西寫成書的時候,是這個東西成熟的時候,也意味著在學術上已經out了。《Hadoop: The Definitive Guide》09年出版,是Hadoop炙手可熱的時候,大多數人(也包括我自己)都是從這本書開始入門的。11年的《Programming Pig》也不錯,12年的《Programming Hive》也可以,這些書都是在系統還沒有到1.0版本的時候出的,佩服O'Reilly的速度。這本書也是在Spark還在0.7版本(可能出版的時候已經0.8/0.9)的時候出的,全書應該2-300頁,用法介紹應該會多些,不過對廣大使用者應該夠用了。O’Reilly書的特點就是新但不深入,對於想要瞭解內部運行機制的人來說,還是閱讀代碼吧。J
再談一下Berkeley這些Geek們,他們繼承了Bill Joy的光芒,一定要做前沿、實用、solid的工作,這也是為什麼他們的論文題目總是“SystemName: A system for ***”。從底層Tachyon到架構Spark,到資源管理Mesos,再到上層Shark/MLBase/Bagel/Streaming等等,都是很系統的工作。對他們真是又愛又恨,愛的是系統都開源,可以學習到先進技術;恨的是他們把idea都想完做完了,J
最早關注Matei是他為Hadoop做的各種調度器:LATE/Delay/Fair調度器。LATE那篇引用率很高,貌似我也貢獻了一個引用。但是調度器的貢獻使用者一般感受不到,這顯然不是Matei去Berkeley的初衷。09年Matei綜合了前輩們的工作,加上頭腦風暴和原型實現,在10年的HotCloud發了他的佔位paper。之後的2年,不斷設計、實現、最佳化、與互連網企業推廣試用,終於在12年系統成型並奪得NSDI的best paper。Shark也類似,可見做system,不僅苦逼,還需要執著與承受力。古語云“天時地利人和”,AMPLab全佔了。不過最重要的是,這些Geek們在光明的道路上一直勇敢向前,值得我們學習與效仿。這些Geek們也很nice,在郵件清單上有問必答,“知無不言,言無不盡”,很受用。Matei今年要畢業當老師了,好想知道他帶學生的樣子。
有幸3月份在清華見到了Shark的作者Reynold Xin,請教了不少問題,也祝賀Shark高中SIGMOD 2013。辛博士在國內的推廣活動比較成功,希望多來做做報告。國內還有很多單位如Intel對Spark的貢獻挺大,他們是對開源有激情、有能力的一幫人,贊一下。
不多廢話了,有時間還是多想想為這個項目貢獻點東西吧。
另外,強烈建議封面換為海星,不然怎麼體現Spark。等到Shark出書的時候,再整成魚而且是鯊魚吧。
@JerryLead
csxulijie@gmail.com
PhD Candidate @ ISCAS
Intern @ System Research Group, MSRA
2013-04-27