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