Coursera數據工程師董飛:硅谷大數據的過去與未來
董飛,Coursera 數據工程師。曾先后在創業公司酷迅,百度基礎架構組,Amazon 云計算部門,LinkedIn 擔任高級工程師,負責垂直搜索,百度云計算平臺研發和廣告系統的架構。董飛本科畢業于南開大學,碩士畢業于杜克大學計算機系。他在知乎上分享過多個引起強 烈反響的問答,其中包括《哪些硅谷創業公司能給拜訪者留下深刻印象》、《美國大數據工程師面試攻略》、《Coursera 上有哪些課程值得推薦》等。
問:硅谷最火的高科技創業公司都有哪些?
在硅谷大家非常熱情地談創業談機會,我也通過自己的一些觀察和積累,看到了不少最近幾年涌現的熱門創業公司。這個是華爾街網站的全世界創業公司融資規模評選。它本來的標題是 billion startup club,不到一年的時間,截至到 2015 年 1 月 17 日,現在的排名和規模已經發生了很大的變化。
- 首先,估值在 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 和云計算接近谷底。
問:你認為未來高科技創業的趨勢是什么?
我先提一部最近看過的電影《模仿游戲》(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、推ter 等等, 商業智能領域的 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 會提供圖形化界面直接串聯工作任務。
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 的衰落,牛人去了 非死book、 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 寫書上的例子,做到有能力調試成功。再下面就是多積累,當遇到相似的問題時能找到對應的經典模式。然后就是實際問題了,也許周邊誰也沒遇到過這樣的問題, 你需要靈感和在網上問問題的技巧,然后根據實際情況作出最佳選擇。