Coursera數(shù)據(jù)工程師董飛:硅谷大數(shù)據(jù)的過去與未來
董飛,Coursera 數(shù)據(jù)工程師。曾先后在創(chuàng)業(yè)公司酷迅,百度基礎(chǔ)架構(gòu)組,Amazon 云計算部門,LinkedIn 擔(dān)任高級工程師,負(fù)責(zé)垂直搜索,百度云計算平臺研發(fā)和廣告系統(tǒng)的架構(gòu)。董飛本科畢業(yè)于南開大學(xué),碩士畢業(yè)于杜克大學(xué)計算機(jī)系。他在知乎上分享過多個引起強(qiáng)烈反響的問答,其中包括《哪些硅谷創(chuàng)業(yè)公司能給拜訪者留下深刻印象》、《美國大數(shù)據(jù)工程師面試攻略》、《Coursera 上有哪些課程值得推薦》等。
問:硅谷最火的高科技創(chuàng)業(yè)公司都有哪些?
在硅谷大家非常熱情地談創(chuàng)業(yè)談機(jī)會,我也通過自己的一些觀察和積累,看到了不少最近幾年涌現(xiàn)的熱門創(chuàng)業(yè)公司。這個是華爾街網(wǎng)站的全世界創(chuàng)業(yè)公司融資規(guī)模評選。它本來的標(biāo)題是 billion startup club,不到一年的時間,截至到 2015 年 1 月 17 日,現(xiàn)在的排名和規(guī)模已經(jīng)發(fā)生了很大的變化。
- 首先,估值在 10 Billlon 的達(dá)到了 7 家,而一年前一家都沒有。
- 第二、第一名是中國人家喻戶曉的小米。
- 第三、前 20 名中,絕大多數(shù)(8 成在美國,在加州,在硅谷,在舊金山?。┍热?Uber,Airbnb,Dropbox,Pinterest。
- 第四、里面也有不少相似的成功模式,比如 Flipkart 就是印度市場的淘寶,Uber 與 Airbnb 都是共享經(jīng)濟(jì)的范疇。
所以大家還是可以在移動(Uber),大數(shù)據(jù)(Palantir),消費(fèi)級互聯(lián)網(wǎng),通訊(Snapchat),支付(Square),O2O App 里面尋找到大機(jī)會。這里面很多公司我都親自面試和感受過他們的環(huán)境。
問:有如此之多的高估值公司,是否意味著存在很大的泡沫?
我認(rèn)為在硅谷這個充滿夢想的地方,投資人鼓勵創(chuàng)業(yè)者大膽去做,同樣也助長了泡沫。很多項(xiàng)目在幾個月的時間就會估值翻2、3 倍,如 Uber,Snapchat 等等,我也驚訝于他們的巨額融資規(guī)模。
下面這張圖講的就是“新興技術(shù)炒作”周期,把各類技術(shù)按照技術(shù)成熟度和期望值分類,這是硅谷創(chuàng)業(yè)孵化器 YCombinator 的課程 How to start a startup 提到的。“創(chuàng)新萌芽(Innovation Trigger)”、“期望最頂點(diǎn)(Peak ofInflated Expectation)”、“下調(diào)預(yù)期至低點(diǎn)(Trough of Disillusion)”、“回歸理想(Slope ofEnlightenment)”、“生產(chǎn)率平臺(Plateau of Productivity)”。越往左,技術(shù)約新潮,越處于概念階段;越往右,技術(shù)約成熟,越容易進(jìn)入商業(yè)化應(yīng)用,發(fā)揮出提高生產(chǎn)率的效果??v軸代表預(yù)期值,人們對于新技術(shù)通常會隨著認(rèn)識的深入,預(yù)期不斷升溫,伴之以媒體炒作而到達(dá)頂峰;隨之因技術(shù)瓶頸或其他原因,預(yù)期逐漸冷卻至低點(diǎn);但技術(shù)成熟后,期望又重新上升,重新積累用戶,然后就到了可持續(xù)增長的健康軌道上來。今年和去年的圖對比顯示,物聯(lián)網(wǎng)、自動駕駛汽車、消費(fèi)級 3D 打印、自然語言問答等概念正在處于炒作的頂峰。而大數(shù)據(jù)已從頂峰滑落,NFC 和云計算接近谷底。
問:你認(rèn)為未來高科技創(chuàng)業(yè)的趨勢是什么?
我先提一部最近看過的電影《模仿游戲》(Imitation Game),這部影片講的是計算機(jī)邏輯的奠基者艾倫圖靈艱難的一生。他當(dāng)年為破譯德軍密碼制作了圖靈機(jī)為二戰(zhàn)勝利做出卓越貢獻(xiàn),挽回幾千萬人的生命,可在那個時代,他因?yàn)槭峭詰俣慌谢瘜W(xué)閹割,最后自殺結(jié)束了短暫的 42 歲生命。他的偉大貢獻(xiàn)之一就是在人工智能方面的開拓,他提出圖靈測試(Turing Test),測試某機(jī)器是否能表現(xiàn)出與人等價或無法區(qū)分的智能。在今天,人工智能已經(jīng)有了很大進(jìn)步,從專家系統(tǒng)到基于統(tǒng)計的學(xué)習(xí),從支持向量機(jī)到神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí),每一步都帶領(lǐng)機(jī)器智能走向下一個階梯。
Google 的資深科學(xué)家吳軍博士(《數(shù)學(xué)之美》,《浪潮之巔》作者),他提出當(dāng)前技術(shù)發(fā)展三個趨勢:第一、云計算和和移動互聯(lián)網(wǎng),這是正在進(jìn)行時;第二、機(jī)器智能,現(xiàn)在開始發(fā)生,但對社會的影響很多人還沒有意識到;第三、大數(shù)據(jù)和機(jī)器智能結(jié)合,這是未來時,一定會發(fā)生,有公司在做,但還沒有太形成規(guī)模。他認(rèn)為未來機(jī)器會控制 98% 的人,而現(xiàn)在我們就要做個選擇,怎么成為剩下的2%? 李開復(fù)在 2015 年新年展望也提出未來五年物聯(lián)網(wǎng)將帶來龐大創(chuàng)業(yè)機(jī)會。
問:為什么大數(shù)據(jù)和機(jī)器智能結(jié)合的未來一定會到來?
其實(shí)在工業(yè)革命(1820 年)之前,世界人均 GDP 在 1800 年前的兩三千年里基本沒有變化,而從 1820 年到 2001 年的 180 年里,世界人均 GDP 從原來的 667 美元增長到 6049 美元。由此足見,工業(yè)革命帶來的收入增長的確是翻天覆地的。但人類的進(jìn)步并沒有停止或者穩(wěn)步增長,在發(fā)明了電力、電腦、互聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)之后,全球年 GDP 增長從萬分之 5 漲到了2%,信息也是在急劇增長。根據(jù)計算,最近兩年的信息量是之前 30 年的總和,最近 10 年的信息量遠(yuǎn)超人類所有之前累計的信息量之和。在計算機(jī)時代,有個著名的摩爾定律,就是說同樣成本下,每隔 18 個月晶體管數(shù)量會翻倍,反過來同樣數(shù)量晶體管成本會減半,這個規(guī)律已經(jīng)很好地對應(yīng)了最近 30 年的發(fā)展,并且可以衍生到很多類似的領(lǐng)域,比如存儲、功耗、帶寬、像素等等。
作為 20 世紀(jì)最重要的數(shù)學(xué)家之一,現(xiàn)代計算機(jī)、博弈論和核武器等諸多領(lǐng)域的科學(xué)全才之一,馮·諾伊曼提出“技術(shù)”將會逼近人類歷史上的某種本質(zhì)的奇點(diǎn),在那之后,全部人類行為都不可能以我們熟悉的面貌繼續(xù)存在。這就是著名的奇點(diǎn)理論。目前,信息量正在以越來越快的指數(shù)型速度增長,美國未來學(xué)家 Ray Kurzweil 稱人類能夠在 2045 年實(shí)現(xiàn)數(shù)字化永生,他自己也創(chuàng)辦了奇點(diǎn)大學(xué)。相信隨著信息技術(shù)、無線網(wǎng)、生物、物理等領(lǐng)域的指數(shù)級增長,人類將在 2029 年實(shí)現(xiàn)人工智能,人的壽命也將會在未來 15 年得到大幅延長。
問:國外值得關(guān)注的大數(shù)據(jù)公司都有哪些?國內(nèi)又有哪些?
大致可以把大數(shù)據(jù)公司分成基礎(chǔ)架構(gòu)類和應(yīng)用類,而底層都是會用到一些通用技術(shù),如 Hadoop、Mahout、HBase、Cassandra 等等;在分析領(lǐng)域,Cloudera、Hortonworks、MapR 是 Hadoop 的三劍客;在運(yùn)維領(lǐng)域,MongoDB、CouchBase 都是 NoSQL 的代表;在服務(wù)領(lǐng)域,AWS 和 Google BigQuery 劍拔弩張;在傳統(tǒng)數(shù)據(jù)庫,Oracle 收購了 MySQL,DB2 是老牌銀行專用,而 Teradata 則做了多年數(shù)據(jù)倉庫。
Apps 領(lǐng)域的大數(shù)據(jù)公司更多,比如社交消費(fèi)領(lǐng)域的 Google、 Amazon、Netflix、Twitter 等等, 商業(yè)智能領(lǐng)域的 SAP、GoodData,還有一些在廣告媒體領(lǐng)域,TURN、Rocketfuel,另外還有做智能運(yùn)維的 Sumo Logic 等等。去年的新星 Databricks 伴隨著 Spark 的浪潮震撼了 Hadoop 的生態(tài)系統(tǒng)。
對于迅速成長的中國市場,大公司也意味著大數(shù)據(jù)。BAT 三家對大數(shù)據(jù)的投入都是不惜余力的。我 4 年前在百度的時候,百度就提出框計算的概念,最近兩年成立了百度硅谷研究院,挖來 Andrew Ng 作為首席科學(xué)家,研究項(xiàng)目就是百度大腦,在語音、圖片識別技術(shù)上大幅提高精確度和召回率,最近還做了個無人自行車,非常有趣。騰訊作為最大的社交應(yīng)用對大數(shù)據(jù)也是情有獨(dú)鐘,他們自己研發(fā)了 C++ 平臺的海量存儲系統(tǒng)。淘寶去年雙十一主戰(zhàn)場,2 分鐘突破 10 億,交易額突破 571 億,背后有很多故事,當(dāng)年在百度做 Pyramid(按 Google 三輛馬車打造的金字塔三層分布式系統(tǒng))的有志之士,繼續(xù)在 OceanBase 創(chuàng)造神話。阿里云當(dāng)年備受爭議,馬云也被懷疑是不是被王堅忽悠,最后經(jīng)歷了雙十一的洗禮證明了 OceanBase 和阿里云是靠譜的。小米的雷軍對大數(shù)據(jù)也寄托厚望,一方面這么多數(shù)據(jù)幾何級數(shù)增長,另一方面存儲帶寬都是巨大成本,沒價值就真破產(chǎn)了。
問:與大數(shù)據(jù)技術(shù)關(guān)系最緊密的就是云計算,您曾在 Amazon 云計算部門工作過,能簡單介紹一下亞馬遜的 AWS 和 Redshift 框架嗎?
AWS 總體上成熟度很高,有大量 startup 都是基于上面開發(fā),比如有名的 Netflix,Pinterest,Coursera 等。Amazon 還在不斷創(chuàng)新,每年召開 reInvent 大會推廣新的云產(chǎn)品和分享成功案例。在這里面我隨便說幾個,S3 是簡單面向?qū)ο蟮拇鎯?,DynamoDB 是對關(guān)系型數(shù)據(jù)庫的補(bǔ)充,Glacier 是對冷數(shù)據(jù)做歸檔處理,Elastic MapReduce 直接對 MapReduce 做打包提供計算服務(wù),EC2 就是基礎(chǔ)的虛擬主機(jī),Data Pipeline 會提供圖形化界面直接串聯(lián)工作任務(wù)。
Redshift 是一種大規(guī)模并行計算(massively parallel computer)架構(gòu),是非常方便的數(shù)據(jù)倉庫解決方案,它作為 SQL 接口跟各個云服務(wù)無縫連接。Redshift 的最大特點(diǎn)就是快,在 TB 到 PB 級別有非常好的性能。我在工作中也是直接使用 Redshift,它還支持不同的硬件平臺,如果想速度更快,可以使用 SSD 的,當(dāng)然支持容量就小些。
問:Hadoop 是現(xiàn)今最流行的大數(shù)據(jù)技術(shù),在它出現(xiàn)的當(dāng)時,是什么造成了 Hadoop 的流行?當(dāng)時 Hadoop 具有哪些設(shè)計上的優(yōu)勢?
要看 Hadoop 從哪里開始,就不得不提 Google 的先進(jìn)性。在 10 多年前,Google 發(fā)表了 3 篇論文論述分布式系統(tǒng)的做法,分別是 GFS、MapReduce、BigTable。雖然都是很厲害的系統(tǒng),但沒人見過。在工業(yè)界很多人癢癢得就想按其思想去仿作。當(dāng)時 Apache Nutch Lucene 的作者 Doug Cutting 也是其中之一。后來 Doug 他們被 Yahoo 收購,專門成立 Team 來投入研究,這就是 Hadoop 開始和大規(guī)模發(fā)展的地方。之后隨著 Yahoo 的衰落,牛人去了 Facebook、 Google,也有的成立了 Cloudera、Hortonworks 等大數(shù)據(jù)公司,把 Hadoop 的實(shí)踐帶到各個硅谷公司。而 Google 還沒有停止,又出了新的三輛馬車,Pregel、Caffeine、Dremel,后來又有很多人步入后塵,開始了新一輪開源大戰(zhàn)。
為啥 Hadoop 就比較適合做大數(shù)據(jù)呢?首先擴(kuò)展性很好,直接通過加節(jié)點(diǎn)就可以把系統(tǒng)能力提高。Hadoop 有個重要思想就是移動計算而不是移動數(shù)據(jù),因?yàn)閿?shù)據(jù)的移動會帶來很大的成本,需要網(wǎng)絡(luò)帶寬。其次,Hadoop 提出的目標(biāo)就是利用廉價的普通計算機(jī)(硬盤),這樣雖然可能不穩(wěn)定(磁盤壞的幾率),但通過系統(tǒng)級別上的容錯和冗余達(dá)到高可靠性。并且非常靈活,可以使用各種數(shù)據(jù),二進(jìn)制、文檔型、記錄型,也可以使用各種形式,結(jié)構(gòu)化、半結(jié)構(gòu)化、非結(jié)構(gòu)化(所謂的 schemaless),在按需計算上也是個技巧。
問:MapReduce 模型有什么問題?
第一、需要寫很多底層的代碼,不夠高效。第二、所有的事情必須要轉(zhuǎn)化成兩個操作 Map 或 Reduce,這本身就很奇怪,也不能解決所有的情況。
問:Spark 從何而來?Spark 相比于 Hadoop MapReduce 設(shè)計上有什么樣的優(yōu)勢?
其實(shí) Spark 出現(xiàn)就是為了解決上面的問題。先說一些 Spark 的起源,它來自 2010 年 Berkeley AMPLab,發(fā)表在 HotCloud 上的 Spark 是一個從學(xué)術(shù)界到工業(yè)界的成功典范,也吸引了頂級 VC Andreessen Horowitz 的注資。在 2013 年,這些大牛(包括 Berkeley 系主任,MIT 最年輕的助理教授)從 Berkeley AMPLab 出去成立了 Databricks,引無數(shù) Hadoop 大佬盡折腰。
Spark 是用函數(shù)式語言 Scala 編寫的,Spark 簡單說就是內(nèi)存計算(包含迭代式計算、DAG 計算、流式計算 )框架。之前 MapReduce 因效率低下,經(jīng)常被大家詬病,而 Spark 的出現(xiàn)讓大家感覺很清新。 Reynod 作為 Spark 核心開發(fā)者,介紹說 Spark 性能超 Hadoop 百倍,算法實(shí)現(xiàn)僅有其1/10 或1/100。在去年的 Sort benchmark 上,Spark 用了 23min 跑完了 100TB 的排序,刷新了之前 Hadoop 保持的世界紀(jì)錄。
問:Linkedin 都采用了哪些大數(shù)據(jù)開源技術(shù)?
在 LinkedIn 有很多數(shù)據(jù)產(chǎn)品,比如 People you may like、Job you may be interested。你的用戶訪問來源,甚至你的 career path 都可以挖掘出來。Linkedin 也大量用到了開源技術(shù),我這里就說一個最成功的 Kafka。Kafka 是一個分布式的消息隊(duì)列,可以用在 tracking、機(jī)器內(nèi)部 metrics、數(shù)據(jù)傳輸上。數(shù)據(jù)在前端后端會經(jīng)過不同的存儲或者平臺,每個平臺都有自己的格式,如果沒有一個 unified log,會出現(xiàn)災(zāi)難型的O(m*n)的數(shù)據(jù)對接復(fù)雜度。如果你設(shè)定的格式一旦發(fā)生變化,也要修改所有相關(guān)的格式。所以這里提出的中間橋梁就是 Kafka,大家約定用一個格式作為傳輸標(biāo)準(zhǔn),然后在接受端可以任意定制你想要的數(shù)據(jù)源(topics),最后實(shí)現(xiàn)線性的O(m+n)復(fù)雜度。對應(yīng)的設(shè)計細(xì)節(jié),還是要參考設(shè)計文檔 ,這里面主要作者 Jay Kreps、Rao Jun 成立了 Kafka 作為獨(dú)立發(fā)展的公司。
Hadoop 作為批處理的主力,大量應(yīng)用在各個產(chǎn)品線上。比如廣告組,我們一方面需要去做一些靈活的查詢,分析廣告主的匹配、廣告預(yù)測和實(shí)際效果,另外在報表生成方面也是用 Hadoop 作為支持。如果你想去面試 LinkedIn 后端組,我建議應(yīng)該去把 Hive、Pig、Azkaban(數(shù)據(jù)流的管理軟件)、Avro 數(shù)據(jù)定義格式、Kafka、Voldemort 都了解一下。LinkedIn 有專門的開源社區(qū),也是在建設(shè)自己的技術(shù)品牌。
問:能談一談 Coursera 在大數(shù)據(jù)架構(gòu)方面和其他硅谷創(chuàng)業(yè)公司相比有什么特點(diǎn)?是什么原因和技術(shù)取向造成了這些特點(diǎn)?
首先我介紹一下 Coursera。作為 MOOC(大型開放式網(wǎng)絡(luò)課程)中的領(lǐng)頭羊,Coursera 在 2012 年由 Stanford 大學(xué)的 Andrew 和 Daphne 兩名教授創(chuàng)立,目前 160 名員工,原 Yale 校長擔(dān)任 CEO。Coursera 的使命是 universal access to world's best education。很多人問我為什么加入,首先我非常認(rèn)可公司的使命,我相信教育可以改變?nèi)松?,同樣我們也可以改變教育。能不能把技術(shù)跟教育結(jié)合起來,這是一個很有趣的話題,里面有很多東西可以結(jié)合。比如提供高可靠平臺支持大規(guī)模用戶在線并發(fā)訪問,利用數(shù)據(jù)挖掘分析學(xué)生行為做個性化課程學(xué)習(xí)并提高課程滿意度,通過機(jī)器學(xué)習(xí)識別作業(yè)、互相評判,用技術(shù)讓人們平等便捷的獲取教育服務(wù)。
Coursera 作為創(chuàng)業(yè)公司,非常想保持敏捷和高效。從技術(shù)上來說,所有的技術(shù)都是基于 AWS 開發(fā)的,可以隨意啟動云端服務(wù)并做實(shí)驗(yàn)。我們大致分成產(chǎn)品組,架構(gòu)組和數(shù)據(jù)分析組。因?yàn)楣颈容^新,所以沒有什么歷史遺留遷移的問題。大家大膽地使用 Scala 作為主要編程語言,采用 Python 作為腳本控制。比如產(chǎn)品組就是提供課程產(chǎn)品,里面大量使用 Play Framework,JavaScript 的 backbone 作為控制中樞。而架構(gòu)組主要是維護(hù)底層存儲、通用服務(wù)、性能和穩(wěn)定性。我所在的數(shù)據(jù)組由 10 多人構(gòu)成,一部分是對商業(yè)產(chǎn)品,核心增長指標(biāo)做監(jiān)控、挖掘和改進(jìn)。一部分是搭建數(shù)據(jù)倉庫完善跟各個部門的無縫數(shù)據(jù)流動,這里也用到了很多技術(shù)。例如使用 Scalding 編寫 Hadoop MapReduce 程序,也有人做 AB testing 框架、 推薦系統(tǒng),盡可能用最少人力做有影響力的事情。其實(shí)除了開源世界,我們也積極使用第三方的產(chǎn)品,比如我們用 Sumo Logic 做日志錯誤分析,用 Redshift 作為大數(shù)據(jù)分析平臺,用 Slack 做內(nèi)部通訊。而所有的這些就是想解放生產(chǎn)力,把重心放到用戶體驗(yàn)、產(chǎn)品開發(fā)和迭代上去。
Coursera 是一個有使命驅(qū)動的公司,大家不是為了追求技術(shù)的極致,而是為了服務(wù)好老師、同學(xué),解決他們的痛點(diǎn),分享他們的成功。這點(diǎn)是跟其他技術(shù)公司最大的區(qū)別。從某個方面來說,現(xiàn)在我們還是處于早期積累階段,大規(guī)模計算時代還沒有來臨,我們只有積極學(xué)習(xí)、適應(yīng)變化才能保持創(chuàng)業(yè)公司的高速成長。
問:如果想從事大數(shù)據(jù)方面的工作,是否可以推薦一些有效的學(xué)習(xí)方法?有哪些推薦的書籍?
首先還是打好基礎(chǔ),Hadoop 雖然火熱,但它的基礎(chǔ)原理都是書本上很多年的積累。像算法導(dǎo)論、Unix 設(shè)計哲學(xué)、數(shù)據(jù)庫原理、深入理解計算機(jī)原理、Java 設(shè)計模式,有一些重量級的書可以參考,Hadoop 最經(jīng)典的 The Definitive Guide, 我在知乎上也有分享。
其次是選擇目標(biāo),如果你想做數(shù)據(jù)科學(xué)家,我可以推薦 coursera 上的 data science 課程,通俗易懂。學(xué)習(xí) Hive,Pig 這些基本工具,如果做應(yīng)用層,主要是要熟悉 Hadoop 的一些工作流,包括一些基本調(diào)優(yōu)。如果是想做架構(gòu),除了要能搭建集群,要對各個基礎(chǔ)軟件服務(wù)很了解,還要理解計算機(jī)的瓶頸和負(fù)載管理以及 Linux 的一些性能工具。
最后,還是要多加練習(xí)。大數(shù)據(jù)本身就靠實(shí)踐,你可以先按 API 寫書上的例子,做到有能力調(diào)試成功。再下面就是多積累,當(dāng)遇到相似的問題時能找到對應(yīng)的經(jīng)典模式。然后就是實(shí)際問題了,也許周邊誰也沒遇到過這樣的問題,你需要靈感和在網(wǎng)上問問題的技巧,然后根據(jù)實(shí)際情況作出最佳選擇。