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 写书上的例子,做到有能力调试成功。再下面就是多积累,当遇到相似的问题时能找到对应的经典模式。然后就是实际问题了,也许周边谁也没遇到过这样的问题, 你需要灵感和在网上问问题的技巧,然后根据实际情况作出最佳选择。