Coursera資料工程師董飛:矽谷大資料的過去與未來(圖靈訪談)

盼盼姐發表於2015-01-27

董飛,Coursera資料工程師。曾先後在創業公司酷迅,百度基礎架構組,Amazon 雲端計算部門,LinkedIn擔任高階工程師,負責垂直搜尋,百度雲端計算平臺研發和廣告系統的架構。董飛本科畢業於南開大學,碩士畢業於杜克大學計算機系。他在知乎上分享過多個引起強烈反響的問答,其中包括《哪些矽谷創業公司能給拜訪者留下深刻印象》《美國大資料工程師面試攻略》《Coursera 上有哪些課程值得推薦》等。

Coursera資料工程師董飛:矽谷大資料的過去與未來(圖靈訪談)

問:矽谷最火的高科技創業公司都有哪些?

在矽谷大家非常熱情地談創業談機會,我也通過自己的一些觀察和積累,看到了不少最近幾年湧現的熱門創業公司。這個是華爾街網站的全世界創業公司融資規模評選。它本來的標題是billion startup club,不到一年的時間,截至到2015年1月17日,現在的排名和規模已經發生了很大的變化。

enter image description here

  • 首先,估值在10 Billlon的達到了7家,而一年前一家都沒有。
  • 第二、第一名是中國人家喻戶曉的小米。
  • 第三、前20名中,絕大多數(8成在美國,在加州,在矽谷,在舊金山!)比如Uber,Airbnb,Dropbox,Pinterest。
  • 第四、裡面也有不少相似的成功模式,比如Flipkart就是印度市場的淘寶,Uber與Airbnb都是共享經濟的範疇。

所以大家還是可以在移動(Uber),大資料(Palantir),消費級網際網路,通訊(Snapchat),支付(Square),O2O App裡面尋找到大機會。這裡面很多公司我都親自面試和感受過他們的環境。

問:有如此之多的高估值公司,是否意味著存在很大的泡沫?

我認為在矽谷這個充滿夢想的地方,投資人鼓勵創業者大膽去做,同樣也助長了泡沫。很多專案在幾個月的時間就會估值翻2、3倍,如Uber,Snapchat等等,我也驚訝於他們的鉅額融資規模。

下面這張圖講的就是“新興技術炒作”週期,把各類技術按照技術成熟度和期望值分類,這是矽谷創業孵化器YCombinator的課程How to start a startup提到的。“創新萌芽(Innovation Trigger)”、“期望最頂點(Peak ofInflated Expectation)”、“下調預期至低點(Trough of Disillusion)”、“迴歸理想(Slope ofEnlightenment)”、“生產率平臺(Plateau of Productivity)”。越往左,技術約新潮,越處於概念階段;越往右,技術約成熟,越容易進入商業化應用,發揮出提高生產率的效果。縱軸代表預期值,人們對於新技術通常會隨著認識的深入,預期不斷升溫,伴之以媒體炒作而到達頂峰;隨之因技術瓶頸或其他原因,預期逐漸冷卻至低點;但技術成熟後,期望又重新上升,重新積累使用者,然後就到了可持續增長的健康軌道上來。今年和去年的圖對比顯示,物聯網、自動駕駛汽車、消費級3D列印、自然語言問答等概念正在處於炒作的頂峰。而大資料已從頂峰滑落,NFC和雲端計算接近谷底。

enter image description here

問:你認為未來高科技創業的趨勢是什麼?

我先提一部最近看過的電影《模仿遊戲》(Imitation Game),這部影片講的是計算機邏輯的奠基者艾倫圖靈艱難的一生。他當年為破譯德軍密碼製作了圖靈機為二戰勝利做出卓越貢獻,挽回幾千萬人的生命,可在那個時代,他因為是同性戀而被判化學閹割,最後自殺結束了短暫的42歲生命。他的偉大貢獻之一就是在人工智慧方面的開拓,他提出圖靈測試(Turing Test),測試某機器是否能表現出與人等價或無法區分的智慧。在今天,人工智慧已經有了很大進步,從專家系統到基於統計的學習,從支援向量機到神經網路深度學習,每一步都帶領機器智慧走向下一個階梯。

Google的資深科學家吳軍博士(《數學之美》,《浪潮之巔》作者),他提出當前技術發展三個趨勢:第一、雲端計算和和移動網際網路,這是正在進行時;第二、機器智慧,現在開始發生,但對社會的影響很多人還沒有意識到;第三、大資料和機器智慧結合,這是未來時,一定會發生,有公司在做,但還沒有太形成規模。他認為未來機器會控制98%的人,而現在我們就要做個選擇,怎麼成為剩下的2%? 李開復在2015年新年展望也提出未來五年物聯網將帶來龐大創業機會。

問:為什麼大資料和機器智慧結合的未來一定會到來?

其實在工業革命(1820年)之前,世界人均GDP在1800年前的兩三千年裡基本沒有變化,而從1820年到2001年的180年裡,世界人均GDP從原來的667美元增長到6049美元。由此足見,工業革命帶來的收入增長的確是翻天覆地的。但人類的進步並沒有停止或者穩步增長,在發明了電力、電腦、網際網路、移動網際網路之後,全球年GDP增長從萬分之5漲到了2%,資訊也是在急劇增長。根據計算,最近兩年的資訊量是之前30年的總和,最近10年的資訊量遠超人類所有之前累計的資訊量之和。在計算機時代,有個著名的摩爾定律,就是說同樣成本下,每隔18個月電晶體數量會翻倍,反過來同樣數量電晶體成本會減半,這個規律已經很好地對應了最近30年的發展,並且可以衍生到很多類似的領域,比如儲存、功耗、頻寬、畫素等等。

作為20世紀最重要的數學家之一,現代計算機、博弈論和核武器等諸多領域的科學全才之一,馮•諾伊曼提出“技術”將會逼近人類歷史上的某種本質的奇點,在那之後,全部人類行為都不可能以我們熟悉的面貌繼續存在。這就是著名的奇點理論。目前,資訊量正在以越來越快的指數型速度增長,美國未來學家Ray Kurzweil稱人類能夠在2045年實現數字化永生,他自己也創辦了奇點大學。相信隨著資訊科技、無線網、生物、物理等領域的指數級增長,人類將在2029年實現人工智慧,人的壽命也將會在未來15年得到大幅延長。

問:國外值得關注的大資料公司都有哪些?國內又有哪些?

大致可以把大資料公司分成基礎架構類和應用類,而底層都是會用到一些通用技術,如Hadoop、Mahout、HBase、Cassandra等等;在分析領域,Cloudera、Hortonworks、MapR是Hadoop的三劍客;在運維領域,MongoDB、CouchBase都是NoSQL的代表;在服務領域,AWS和Google BigQuery劍拔弩張;在傳統資料庫,Oracle收購了MySQL,DB2是老牌銀行專用,而Teradata則做了多年資料倉儲。

Apps領域的大資料公司更多,比如社交消費領域的Google、 Amazon、Netflix、Twitter等等, 商業智慧領域的SAP、GoodData,還有一些在廣告媒體領域,TURN、Rocketfuel,另外還有做智慧運維的Sumo Logic等等。去年的新星 Databricks 伴隨著Spark的浪潮震撼了Hadoop的生態系統。

對於迅速成長的中國市場,大公司也意味著大資料。BAT三家對大資料的投入都是不惜餘力的。我4年前在百度的時候,百度就提出框計算的概念,最近兩年成立了百度矽谷研究院,挖來Andrew Ng作為首席科學家,研究專案就是百度大腦,在語音、圖片識別技術上大幅提高精確度和召回率,最近還做了個無人自行車,非常有趣。騰訊作為最大的社交應用對大資料也是情有獨鍾,他們自己研發了C++平臺的海量儲存系統。淘寶去年雙十一主戰場,2分鐘突破10億,交易額突破571億,背後有很多故事,當年在百度做Pyramid(按Google三輛馬車打造的金字塔三層分散式系統)的有志之士,繼續在OceanBase創造神話。阿里雲當年備受爭議,馬雲也被懷疑是不是被王堅忽悠,最後經歷了雙十一的洗禮證明了OceanBase和阿里雲是靠譜的。小米的雷軍對大資料也寄託厚望,一方面這麼多資料幾何級數增長,另一方面儲存頻寬都是巨大成本,沒價值就真破產了。

問:與大資料技術關係最緊密的就是雲端計算,您曾在Amazon 雲端計算部門工作過,能簡單介紹一下亞馬遜的AWS和Redshift框架嗎?

AWS總體上成熟度很高,有大量startup都是基於上面開發,比如有名的Netflix,Pinterest,Coursera等。Amazon還在不斷創新,每年召開reInvent大會推廣新的雲產品和分享成功案例。在這裡面我隨便說幾個,S3是簡單物件導向的儲存,DynamoDB是對關係型資料庫的補充,Glacier是對冷資料做歸檔處理,Elastic MapReduce直接對MapReduce做打包提供計算服務,EC2就是基礎的虛擬主機,Data Pipeline 會提供圖形化介面直接串聯工作任務。

enter image description here

Redshift是一種大規模平行計算(massively parallel computer)架構,是非常方便的資料倉儲解決方案,它作為SQL介面跟各個雲服務無縫連線。Redshift的最大特點就是快,在TB到PB級別有非常好的效能。我在工作中也是直接使用Redshift,它還支援不同的硬體平臺,如果想速度更快,可以使用SSD的,當然支援容量就小些。

問:Hadoop是現今最流行的大資料技術,在它出現的當時,是什麼造成了Hadoop的流行?當時Hadoop具有哪些設計上的優勢?

要看Hadoop從哪裡開始,就不得不提Google的先進性。在10多年前,Google發表了3篇論文論述分散式系統的做法,分別是GFS、MapReduce、BigTable。雖然都是很厲害的系統,但沒人見過。在工業界很多人癢癢得就想按其思想去仿作。當時Apache Nutch Lucene的作者Doug Cutting也是其中之一。後來Doug他們被Yahoo收購,專門成立Team來投入研究,這就是Hadoop開始和大規模發展的地方。之後隨著Yahoo的衰落,牛人去了Facebook、 Google,也有的成立了Cloudera、Hortonworks等大資料公司,把Hadoop的實踐帶到各個矽谷公司。而Google還沒有停止,又出了新的三輛馬車,Pregel、Caffeine、Dremel,後來又有很多人步入後塵,開始了新一輪開源大戰。

為啥Hadoop就比較適合做大資料呢?首先擴充套件性很好,直接通過加節點就可以把系統能力提高。Hadoop有個重要思想就是移動計算而不是移動資料,因為資料的移動會帶來很大的成本,需要網路頻寬。其次,Hadoop提出的目標就是利用廉價的普通計算機(硬碟),這樣雖然可能不穩定(磁碟壞的機率),但通過系統級別上的容錯和冗餘達到高可靠性。並且非常靈活,可以使用各種資料,二進位制、文件型、記錄型,也可以使用各種形式,結構化、半結構化、非結構化(所謂的schemaless),在按需計算上也是個技巧。

問:MapReduce模型有什麼問題?

第一、需要寫很多底層的程式碼,不夠高效。第二、所有的事情必須要轉化成兩個操作Map或Reduce,這本身就很奇怪,也不能解決所有的情況。

問:Spark從何而來?Spark相比於Hadoop MapReduce設計上有什麼樣的優勢?

其實Spark出現就是為了解決上面的問題。先說一些Spark的起源,它來自 2010年Berkeley AMPLab,發表在HotCloud上的Spark是一個從學術界到工業界的成功典範,也吸引了頂級VC Andreessen Horowitz的注資。在2013年,這些大牛(包括Berkeley系主任,MIT最年輕的助理教授)從Berkeley AMPLab出去成立了Databricks,引無數Hadoop大佬盡折腰。

Spark是用函式式語言Scala編寫的,Spark簡單說就是記憶體計算(包含迭代式計算、DAG計算、流式計算 )框架。之前MapReduce因效率低下,經常被大家詬病,而Spark的出現讓大家感覺很清新。 Reynod 作為Spark核心開發者,介紹說Spark效能超Hadoop百倍,演算法實現僅有其1/10或1/100。在去年的Sort benchmark上,Spark用了23min跑完了100TB的排序,重新整理了之前Hadoop保持的世界紀錄。

問:Linkedin都採用了哪些大資料開源技術?

在LinkedIn有很多資料產品,比如People you may like、Job you may be interested。你的使用者訪問來源,甚至你的career path都可以挖掘出來。Linkedin也大量用到了開源技術,我這裡就說一個最成功的Kafka。Kafka是一個分散式的訊息佇列,可以用在tracking、機器內部metrics、資料傳輸上。資料在前端後端會經過不同的儲存或者平臺,每個平臺都有自己的格式,如果沒有一個unified log,會出現災難型的O(m*n)的資料對接複雜度。如果你設定的格式一旦發生變化,也要修改所有相關的格式。所以這裡提出的中間橋樑就是Kafka,大家約定用一個格式作為傳輸標準,然後在接受端可以任意定製你想要的資料來源(topics),最後實現線性的O(m+n)複雜度。對應的設計細節,還是要參考設計文件 ,這裡面主要作者Jay Kreps、Rao Jun成立了Kafka作為獨立發展的公司。

Hadoop作為批處理的主力,大量應用在各個產品線上。比如廣告組,我們一方面需要去做一些靈活的查詢,分析廣告主的匹配、廣告預測和實際效果,另外在報表生成方面也是用Hadoop作為支援。如果你想去面試LinkedIn 後端組,我建議應該去把Hive、Pig、Azkaban(資料流的管理軟體)、Avro 資料定義格式、Kafka、Voldemort 都瞭解一下。LinkedIn有專門的開源社群,也是在建設自己的技術品牌。

問:能談一談Coursera在大資料架構方面和其他矽谷創業公司相比有什麼特點?是什麼原因和技術取向造成了這些特點?

首先我介紹一下Coursera。作為MOOC(大型開放式網路課程)中的領頭羊,Coursera在2012年由Stanford大學的Andrew和Daphne兩名教授創立,目前160名員工,原Yale校長擔任CEO。Coursera的使命是universal access to world's best education。很多人問我為什麼加入,首先我非常認可公司的使命,我相信教育可以改變人生,同樣我們也可以改變教育。能不能把技術跟教育結合起來,這是一個很有趣的話題,裡面有很多東西可以結合。比如提供高可靠平臺支援大規模使用者線上併發訪問,利用資料探勘分析學生行為做個性化課程學習並提高課程滿意度,通過機器學習識別作業、互相評判,用技術讓人們平等便捷的獲取教育服務。

Coursera作為創業公司,非常想保持敏捷和高效。從技術上來說,所有的技術都是基於AWS開發的,可以隨意啟動雲端服務並做實驗。我們大致分成產品組,架構組和資料分析組。因為公司比較新,所以沒有什麼歷史遺留遷移的問題。大家大膽地使用Scala作為主要程式語言,採用Python作為指令碼控制。比如產品組就是提供課程產品,裡面大量使用Play Framework,JavaScript的backbone作為控制中樞。而架構組主要是維護底層儲存、通用服務、效能和穩定性。我所在的資料組由10多人構成,一部分是對商業產品,核心增長指標做監控、挖掘和改進。一部分是搭建資料倉儲完善跟各個部門的無縫資料流動,這裡也用到了很多技術。例如使用Scalding編寫Hadoop MapReduce程式,也有人做AB testing框架、 推薦系統,儘可能用最少人力做有影響力的事情。其實除了開源世界,我們也積極使用第三方的產品,比如我們用Sumo Logic做日誌錯誤分析,用Redshift作為大資料分析平臺,用Slack做內部通訊。而所有的這些就是想解放生產力,把重心放到使用者體驗、產品開發和迭代上去。

Coursera是一個有使命驅動的公司,大家不是為了追求技術的極致,而是為了服務好老師、同學,解決他們的痛點,分享他們的成功。這點是跟其他技術公司最大的區別。從某個方面來說,現在我們還是處於早期積累階段,大規模計算時代還沒有來臨,我們只有積極學習、適應變化才能保持創業公司的高速成長。

問:如果想從事大資料方面的工作,是否可以推薦一些有效的學習方法?有哪些推薦的書籍?

首先還是打好基礎,Hadoop雖然火熱,但它的基礎原理都是書本上很多年的積累。像演算法導論、Unix設計哲學、資料庫原理、深入理解計算機原理、Java設計模式,有一些重量級的書可以參考,Hadoop 最經典的The Definitive Guide, 我在知乎上也有分享

其次是選擇目標,如果你想做資料科學家,我可以推薦coursera上的data science課程,通俗易懂。學習Hive,Pig這些基本工具,如果做應用層,主要是要熟悉Hadoop的一些工作流,包括一些基本調優。如果是想做架構,除了要能搭建叢集,要對各個基礎軟體服務很瞭解,還要理解計算機的瓶頸和負載管理以及Linux的一些效能工具。

最後,還是要多加練習。大資料本身就靠實踐,你可以先按API寫書上的例子,做到有能力除錯成功。再下面就是多積累,當遇到相似的問題時能找到對應的經典模式。然後就是實際問題了,也許周邊誰也沒遇到過這樣的問題,你需要靈感和在網上問問題的技巧,然後根據實際情況作出最佳選擇。


更多精彩,加入圖靈訪談微信!

相關文章