从硅谷公司哪家强,到人人在议的泡沫问题,大数据和人工智能如何结合?2015年的科技前瞻是怎样一副图景?来自硅谷的Coursera软件工程师董飞将其近日在斯坦福公开讲座上的干货和各种场合的问答整理出来和大家分享。文中有他的一手从业经验,也有其对亲身就职或深度研究过的一些公司具体分析,如Hadoop、Amazon、LinkedIn等。董飞的知乎页面 在这里 ,邮箱是dongfeiwww@gmail.com。
在硅谷大家非常热情的谈创业谈机会,我也通过自己的一些观察和积累,看到了不少最近几年涌现的热门创业公司。我给大家一个列表,这个是华尔街网站的 全世界创业公司融资规模评选 。它本来的标题是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上我也惊讶于他们的巨额融资规模。那么这张图就是讲“新兴技术炒作”周期,把各类技术按照技术成熟度和期望值分类。
创新萌芽Innovation Trigger”、“期望最顶点Peak ofInflated Expectation”、“下调预期至低点Trough of Disillusion”、“回归理想Slope ofEnlightenment”、“生产率平台Plateau of Productivity”,越往左,技术约新潮,越处于概念阶段;越往右,技术约成熟,约进入商业化应用,发挥出提高生产率的效果。纵轴代表预期值,人们对于新技术通常会随着认识的深入,预期不断升温,伴之以媒体炒作而到达顶峰;随之因技术瓶颈或其他原因,预期逐渐冷却至低点,但技术技术成熟后,期望又重新上升,重新积累用户,然后就到了可持续增长的健康轨道上来。
Gartner公司每年发布 技术趋势炒作图 。今年和去年的图对比显示,物联网、自动驾驶汽车、消费级3D打印、自然语言问答等概念正在处于炒作的顶峰。而大数据已从顶峰滑落,NFC和云计算接近谷底。
我先提一个最近看的一部电影《Imitation Game》,讲计算机逻辑的奠基者艾伦图灵(计算机届最高奖以他命名)艰难的一生,他当年为破译德军密码制作了图灵机为二战胜利作出卓越贡献,挽回几千万人的生命,可在那个时代因为同性恋被判化学阉割,自杀结束了短暂的42岁生命。他的一个伟大贡献就是在人工智能的开拓工作,他提出图灵测试(Turing Test),测试某机器是否能表现出与人等价或无法区分的智能。
今天人工智能已经有了很大进步,从专家系统到基于统计的学习,从支持向量机到神经网络深度学习,每一步都带领机器智能走向下一个阶梯。
在Google资深科学家吴军博士(数学之美,浪潮之巅作者),他提出当前技术发展三个趋势,第一,云计算和和移动互联网,这是正在进行时;第二,机器智能,现在开始发生,但对社会的影响很多人还没有意识到;第三,大数据和机器智能结合,这是未来时,一定会发生,有公司在做,但还没有太形成规模。他认为未来机器会控制98%的人,而现在我们就要做个选择,怎么成为剩下的2%?
其实在工业革命之前(1820年),世界人均GDP在1800年前的两三千年里基本没有变化,而从1820年到2001年的180年里,世界人均GDP从原来的667美元增长到6049美元。由此足见,工业革命带来的收入增长的确是翻天覆地的。这里面发生了什么,大家可以去思考一下。但人类的进步并没有停止或者说稳步增长,在发明了电力,电脑,互联网,移动互联网,全球年GDP增长从万分之5到2%,信息也是在急剧增长,根据计算,最近两年的信息量是之前30年的总和,最近10年是远超人类所有之前累计信息量之和。在计算机时代,有个著名的摩尔定律,就是说同样成本每隔18个月晶体管数量会翻倍,反过来同样数量晶体管成本会减半,这个规律已经很好的match了最近30年的发展,并且可以衍生到很多类似的领域:存储、功耗、带宽、像素。
冯诺伊曼是20世纪最重要的数学家之一,在现代计算机、博弈论和核武器等诸多领域内有杰出建树的最伟大的科学全才之一。他提出(技术)将会逼近人类历史上的某种本质的奇点,在那之后 全部人类行为都不可能以我们熟悉的面貌继续存在。这就是著名的奇点理论。目前会越来越快指数性增长,美国未来学家Ray Kurzweil称人类能够在2045年实现数字化永生,他自己也创办奇点大学,相信随着信息技术、无线网、生物、物理等领域的指数级增长,将在2029年实现人工智能,人的寿命也将会在未来15年得到大幅延长。
这是2014年总结的Big Data公司列表,我们大致可以分成基础架构和应用,而底层都是会用到一些通用技术,如Hadoop,Mahout,HBase,Cassandra,我在下面也会涵盖。我可以举几个例子,在分析这一块,cloudera,hortonworks,mapr作为Hadoop的三剑客,一些运维领域,mangodb,couchbase都是nosql的代表,作为服务领域AWS和Google BigQuery剑拔弩张,在传统数据库,Oracle收购了MySQL,DB2老牌银行专用,Teradata做了多年数据仓库。上面的Apps更多,比如社交消费领域Google, Amazon, Netflix, Twitter, 商业智能:SAP,GoodData,一些在广告媒体领域:TURN,Rocketfuel,做智能运维sumologic等等。去年的新星 Databricks 伴随着Spark的浪潮震撼Hadoop的生态系统。
对于迅速成长的中国市场,大公司也意味着大数据,BAT三家都是对大数据的投入也是不惜余力。
我5年前在百度的时候,就提出框计算的东东,最近两年他们成立了硅谷研究院,挖来Andrew Ng作为首席科学家,研究项目就是百度大脑,在语音、图片识别大幅提高精确度和召回率,最近还做了个无人自行车,非常有趣。腾讯作为最大的社交应用对大数据也是情有独钟,自己研发了C++平台的海量存储系统。淘宝去年双十一主战场,2分钟突破10亿,交易额突破571亿,背后是有很多故事,当年在百度做Pyramid(按Google三辆马车打造的金字塔三层分布式系统)的有志之士,继续在OceanBase创造神话。而阿里云当年备受争议,马云也怀疑是不是被王坚忽悠,最后经历了双十一的洗礼证明了阿里云的靠谱。小米的雷军对大数据也是寄托厚望,一方面这么多数据几何级数增长,另一方面存储带宽都是巨大成本,没价值就会破产。
6、Hadoop是现今最流行的大数据技术,在它出现的当时,是什么造成了Hadoop的流行?当时Hadoop具有哪些设计上的优势?
看Hadoop从哪里开始的,不得不提Google的先进性,在10多年前,Google出了3篇paper论述分布式系统的做法,分别是GFS, MapReduce, BigTable,非常NB的系统,但没人见过,在工业界很多人痒痒的就想按其思想去仿作,当时Apache Nutch Lucene的作者Doug Cutting也是其中之一,后来他们被Yahoo收购,专门成立Team去投入做,就是Hadoop的开始和大规模发展的地方,之后随着Yahoo的牛人去了Facebook, Google, 也有成立了Cloudera, Hortonworks等大数据公司,把Hadoop的实践带到各个硅谷公司。而Google还没有停止,又出了新的三辆马车,Pregel, Caffeine, Dremel, 后来又有很多步入后尘,开始新一轮开源大战。
为啥Hadoop就比较适合做大数据呢?首先扩展很好,直接通过加节点就可以把系统能力提高,它有个重要思想是移动计算而不是移动数据,因为数据的移动是很大的成本需要网络带宽。其次它提出的目标就是利用廉价的普通计算机(硬盘),这样虽然可能不稳定(磁盘坏的几率),但通过系统级别上的容错和冗余达到高可靠性。并且非常灵活,可以使用各种data,二进制,文档型,记录型。使用各种形式(结构化,半结构化,非结构化所谓的schemaless),在按需计算上也是个技巧。
提到Hadoop一般不会说某一个东西,而是指生态系统,在这里面太多交互的组件了,涉及到IO,处理,应用,配置,工作流。在真正的工作中,当几个组件互相影响,你头疼的维护才刚刚开始。我也简单说几个:Hadoop Core就三个HDFS,MapReduce,Common,在外围有NoSQL: Cassandra, HBase, 有Facebook开发的数据仓库Hive,有Yahoo主力研发的Pig工作流语言,有机器学习算法库Mahout,工作流管理软件Oozie,在很多分布式系统选择Master中扮演重要角色的Zookeeper。
我们先说HDFS,所谓Hadoop的分布式文件系统,它是能真正做到高强度容错。并且根据locality原理,对连续存储做了优化。简单说就是分配大的数据块,每次连续读整数个。如果让你自己来设计分布式文件系统,在某机器挂掉还能正常访问该怎么做?首先需要有个master作为目录查找(就是Namenode),那么数据节点是作为分割好一块块的,同一块数据为了做备份不能放到同一个机器上,否则这台机器挂了,你备份也同样没办法找到。HDFS用一种机架位感知的办法,先把一份拷贝放入同机架上的机器,然后在拷贝一份到其他服务器,也许是不同数据中心的,这样如果某个数据点坏了,就从另一个机架上调用,而同一个机架它们内网连接是非常快的,如果那个机器也坏了,只能从远程去获取。这是一种办法,现在还有基于erasure code本来是用在通信容错领域的办法,可以节约空间又达到容错的目的,大家感兴趣可以去查询。
接着说MapReduce,首先是个编程范式,它的思想是对批量处理的任务,分成两个阶段,所谓的Map阶段就是把数据生成key, value pair, 再排序,中间有一步叫shuffle,把同样的key运输到同一个reducer上面去,而在reducer上,因为同样key已经确保在同一个上,就直接可以做聚合,算出一些sum, 最后把结果输出到HDFS上。对应开发者来说,你需要做的就是编写Map和reduce函数,像中间的排序和shuffle网络传输,容错处理,框架已经帮你做好了。
第一:需要写很多底层的代码不够高效,第二:所有的事情必须要转化成两个操作Map/Reduce,这本身就很奇怪,也不能解决所有的情况。
其实Spark出现就是为了解决上面的问题。先说一些Spark的起源。发自 2010年Berkeley AMPLab,发表在hotcloud 是一个从学术界到工业界的成功典范,也吸引了顶级VC:Andreessen Horowitz的 注资. 在2013年,这些大牛(Berkeley系主任,MIT最年轻的助理教授)从Berkeley AMPLab出去成立了Databricks,引无数Hadoop大佬尽折腰,它是用函数式语言Scala编写,Spark简单说就是内存计算(包含迭代式计算,DAG计算,流式计算 )框架,之前MapReduce因效率低下大家经常嘲笑,而Spark的出现让大家很清新。 Reynod 作为Spark核心开发者, 介绍Spark性能超Hadoop百倍,算法实现仅有其1/10或1/100。在去年的Sort benchmark上,Spark用了23min跑完了100TB的排序,刷新了之前Hadoop保持的世界纪录。
11、如果想从事大数据方面的工作,是否可以推荐一些有效的学习方法?有哪些推荐的书籍?
我也有一些建议,首先还是打好基础,Hadoop虽然是火热,但它的基础原理都是书本上很多年的积累,像算法导论,Unix设计哲学,数据库原理,深入理解计算机原理,Java设计模式,一些重量级的书可以参考。Hadoop 最经典的the definitive guide, 我在知乎上也有 分享 。
其次是选择目标,如果你像做数据科学家,我可以推荐 coursera的data science课程 ,通俗易懂。学习Hive,Pig这些基本工具,如果做应用层,主要是把Hadoop的一些工作流要熟悉,包括一些基本调优,如果是想做架构,除了能搭建集群,对各个基础软件服务很了解,还要理解计算机的瓶颈和负载管理,Linux的一些性能工具。最后还是要多加练习,大数据本身就是靠实践的,你可以先按API写书上的例子,能够先调试成功,在下面就是多积累,当遇到相似的问题能找到对应的经典模式,再进一步就是实际问题,也许周边谁也没遇到,你需要些灵感和网上问问题的技巧,然后根据实际情况作出最佳选择。
12、与大数据技术关系最紧密的就是云计算,您曾在Amazon 云计算部门工作过,能否简单介绍一下亚马逊的Redshift框架吗?
我在Amazon 云计算部门工作过,所以还是比较了解AWS,总体上成熟度很高,有大量startup是基于其开发,比如有名的Netflix,Pinterest,Coursera。Amazon还是不断创新,每年召开reInvent大会推广新的云产品和分享成功案例,在这里面我随便说几个:像S3是简单面向对象的存储,DynamoDB是对关系型数据库的补充,Glacier对冷数据做归档处理,Elastic MapReduce直接对MapReduce做打包提供计算服务,EC2就是基础的虚拟主机,Data Pipeline 会提供图形化界面直接串联工作任务。
Redshift,它是一种(massively parallel computer)架构,是非常方便的数据仓库解决方案,就是SQL接口,跟各个云服务无缝连接,最大特点就是快,在TB到PB级别非常好的性能,我在工作中也是直接使用,它还支持不同的硬件平台,如果想速度更快,可以使用SSD的,当然支持容量就小些。
在Linkedin,有很多数据产品,比如People you may like, job you may be interested, 你的用户访问来源,甚至你的career path都可以挖掘出来。那么在Linkedin也是大量用到开源技术,我这里就说一个最成功的Kafka,它是一个分布式的消息队列,可以用在tracking,机器内部metrics,数据传输。数据在前端后端会经过不同的存储或者平台,每个平台都有自己的格式,如果没有一个unified log,会出现灾难型的O(m*n)的数据对接复杂度,如果你设定的格式一旦发生变化,也是要修改所有相关的。所以这里提出的中间桥梁就是Kafka,大家约定用一个格式作为传输标准,然后在接受端可以任意定制你想要的数据源(topics),最后实现的线性的O(m+n)的复杂度。对应的设计细节,还是要 参考设计文档 。这里面主要作者Jay Kreps,Rao Jun 出来成立了Kafka作为独立发展的公司。
在Linkedin,Hadoop作为批处理的主力,大量应用在各个产品线上,比如广告组。我们一方面需要去做一些灵活的查询分析广告主的匹配,广告预测和实际效果,另外在报表生成方面也是Hadoop作为支持。如果你想去面试Linkedin 后端组,我建议大家去把Hive, Pig, Azkaban(数据流的管理软件),Avro 数据定义格式,Kafka,Voldemort 都去看一些设计理念,Linkedin有专门的开源社区,也是build自己的 技术品牌 。
14、谈一谈Coursera在大数据架构方面和其他硅谷创业公司相比有什么特点?是什么原因和技术取向造成了这些特点?
Coursera是一个有使命驱动的公司,大家不是为了追求技术的极致,而是为了服务好老师,同学,解决他们的痛点,分享他们的成功。这点是跟其他技术公司最大的区别。从一方面来说,现在还是早期积累阶段,大规模计算还没有来临,我们只有积极学习,适应变化才能保持创业公司的高速成长。
Coursera作为创业公司,非常想保持敏捷和高效。从技术上来说,所有的都是在基于AWS开发,可以想像随意启动云端服务,做一些实验。我们大致分成产品组,架构组,和数据分析组。我把所有用到的开发技术都列在上面。因为公司比较新,所以没有什么历史遗留迁移的问题。大家大胆的使用Scala作为主要编程语言,采用Python作为脚本控制,比如产品组就是提供的课程产品,里面大量使用Play Framework,Javascript的backbone作为控制中枢。而架构组主要是维护底层存储,通用服务,性能和稳定性。
我在的数据组由10多人构成,一部分是对商业产品,核心增长指标做监控,挖掘和改进。一部分是搭建数据仓库完善跟各个部门的无缝数据流动,也用到很多技术例如使用Scalding编写Hadoop MapReduce程序,也有人做AB testing框架, 推荐系统,尽可能用最少人力做影响力的事情。其实除了开源世界,我们也积极使用第三方的产品,比如sumologic做日志错误分析,Redshift作为大数据分析平台,Slack做内部通讯。而所有的这些就是想解放生产力,把重心放到用户体验,产品开发和迭代上去。
[本文来自读者的投稿,不代表 36氪 立场]