对硅谷和硅谷科技公司的十四问
从硅谷公司哪家强,到人人在议的泡沫问题,大数据和人工智能如何结合?2015 年的科技前瞻是怎样一副图景?来自硅谷的 Coursera 软件工程师董飞将其近日在斯坦福公开讲座上的干货和各种场合的问答整理出来和大家分享。文中有他的一手从业经验,也有其对亲身就职或深度研究过的一些公司具体分析,如 Hadoop、Amazon、LinkedIn 等。
1、目前硅谷最火最有名的高科技创业公司都有哪些?
在硅谷大家非常热情的谈创业谈机会,我也通过自己的一些观察和积累,看到了不少最近几年涌现的热门创业公司。我给大家一个列表,这个是华尔街网站的全世界创业公司融资规模评选。它本来的标题是 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、有如此之多的高估值公司,是否意味着存在很大的泡沫?
看了那么多高估值公司,很多人都觉得非常疯狂,这是不是很大泡沫了,泡沫是不是要破了,是很多人的疑问。我认为在硅谷这个充满梦想的地方,投资人鼓励创业者大胆去做同样也助长了泡沫,很多项目在几个月的时间就会估值翻 2,3 倍,如 Uber,Snapchat 上我也惊讶于他们的巨额融资规模。那么这张图就是讲“新兴技术炒作”周期,把各类技术按照技术成熟度和期望值分类。
创新萌芽 Innovation Trigger”、“期望最顶点 Peak ofInflated Expectation”、“下调预期至低点 Trough of Disillusion”、“回归理想 Slope ofEnlightenment”、“生产率平台 Plateau of Productivity”,越往左,技术约新潮,越处于概念阶段;越往右,技术约成熟,约进入商业化应用,发挥出提高生产率的效果。纵轴代表预期值,人们对于新技术通常会随着认识的深入,预期不断升温,伴之以媒体炒作而到达顶峰;随之因技术瓶颈或其他原因,预期逐渐冷却至低点,但技术技术成熟后,期望又重新上升,重新积累用户,然后就到了可持续增长的健康轨道上来。
Gartner 公司每年发布技术趋势炒作图。今年和去年的图对比显示,物联网、自动驾驶汽车、消费级 3D 打印、自然语言问答等概念正在处于炒作的顶峰。而大数据已从顶峰滑落,NFC 和云计算接近谷底。
3、未来,高科技创业的趋势是什么?
我先提一个最近看的一部电影《Imitation Game》,讲计算机逻辑的奠基者艾伦图灵(计算机届最高奖以他命名)艰难的一生,他当年为破译德军密码制作了图灵机为二战胜利作出卓越贡献,挽回几千万人的生命,可在那个时代因为同性恋被判化学阉割,自杀结束了短暂的 42 岁生命。他的一个伟大贡献就是在人工智能的开拓工作,他提出图灵测试(Turing Test),测试某机器是否能表现出与人等价或无法区分的智能。
今天人工智能已经有了很大进步,从专家系统到基于统计的学习,从支持向量机到神经网络深度学习,每一步都带领机器智能走向下一个阶梯。
在 Google 资深科学家吴军博士(数学之美,浪潮之巅作者),他提出当前技术发展三个趋势,第一,云计算和和移动互联网,这是正在进行时;第二,机器智能,现在开始发生,但对社会的影响很多人还没有意识到;第三,大数据和机器智能结合,这是未来时,一定会发生,有公司在做,但还没有太形成规模。他认为未来机器会控制 98% 的人,而现在我们就要做个选择,怎么成为剩下的 2%?
4、为什么大数据和机器智能结合的未来一定会到来?
其实在工业革命之前(1820 年),世界人均 GDP 在 1800 年前的两三千年里基本没有变化,而从 1820 年到 2001 年的 180 年里,世界人均 GDP 从原来的 667 美元增长到 6049 美元。由此足见,工业革命带来的收入增长的确是翻天覆地的。这里面发生了什么,大家可以去思考一下。但人类的进步并没有停止或者说稳步增长,在发明了电力,电脑,互联网,移动互联网,全球年 GDP 增长从万分之 5 到 2%,信息也是在急剧增长,根据计算,最近两年的信息量是之前 30 年的总和,最近 10 年是远超人类所有之前累计信息量之和。在计算机时代,有个著名的摩尔定律,就是说同样成本每隔 18 个月晶体管数量会翻倍,反过来同样数量晶体管成本会减半,这个规律已经很好的 match 了最近 30 年的发展,并且可以衍生到很多类似的领域:存储、功耗、带宽、像素。
冯诺伊曼是 20 世纪最重要的数学家之一,在现代计算机、博弈论和核武器等诸多领域内有杰出建树的最伟大的科学全才之一。他提出(技术)将会逼近人类历史上的某种本质的奇点,在那之后全部人类行为都不可能以我们熟悉的面貌继续存在。这就是著名的奇点理论。目前会越来越快指数性增长,美国未来学家 Ray Kurzweil 称人类能够在 2045 年实现数字化永生,他自己也创办奇点大学,相信随着信息技术、无线网、生物、物理等领域的指数级增长,将在 2029 年实现人工智能,人的寿命也将会在未来 15 年得到大幅延长。
5、国外值得关注的大数据公司都有哪些?国内又有哪些?
这是 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),在按需计算上也是个技巧。
7、围绕在 Hadoop 周围的有哪些公司和产品?
提到 Hadoop 一般不会说某一个东西,而是指生态系统,在这里面太多交互的组件了,涉及到 IO,处理,应用,配置,工作流。在真正的工作中,当几个组件互相影响,你头疼的维护才刚刚开始。我也简单说几个:Hadoop Core 就三个 HDFS,MapReduce,Common,在外围有 NoSQL: Cassandra, HBase, 有 Facebook 开发的数据仓库 Hive,有 Yahoo 主力研发的 Pig 工作流语言,有机器学习算法库 Mahout,工作流管理软件 Oozie,在很多分布式系统选择 Master 中扮演重要角色的 Zookeeper。
8、能否用普通人都能理解的方式解释一下 Hadoop 的工作原理?
我们先说 HDFS,所谓 Hadoop 的分布式文件系统,它是能真正做到高强度容错。并且根据 locality 原理,对连续存储做了优化。简单说就是分配大的数据块,每次连续读整数个。如果让你自己来设计分布式文件系统,在某机器挂掉还能正常访问该怎么做?首先需要有个 master 作为目录查找(就是 Namenode),那么数据节点是作为分割好一块块的,同一块数据为了做备份不能放到同一个机器上,否则这台机器挂了,你备份也同样没办法找到。HDFS 用一种机架位感知的办法,先把一份拷贝放入同机架上的机器,然后在拷贝一份到其他服务器,也许是不同数据中心的,这样如果某个数据点坏了,就从另一个机架上调用,而同一个机架它们内网连接是非常快的,如果那个机器也坏了,只能从远程去获取。这是一种办法,现在还有基于 erasure code 本来是用在通信容错领域的办法,可以节约空间又达到容错的目的,大家感兴趣可以去查询。
接着说 MapReduce,首先是个编程范式,它的思想是对批量处理的任务,分成两个阶段,所谓的 Map 阶段就是把数据生成 key, value pair, 再排序,中间有一步叫 shuffle,把同样的 key 运输到同一个 reducer 上面去,而在 reducer 上,因为同样 key 已经确保在同一个上,就直接可以做聚合,算出一些 sum, 最后把结果输出到 HDFS 上。对应开发者来说,你需要做的就是编写 Map 和 reduce 函数,像中间的排序和 shuffle 网络传输,容错处理,框架已经帮你做好了。
9、MapReduce 模型本身也有一些问题?
第一:需要写很多底层的代码不够高效,第二:所有的事情必须要转化成两个操作 Map/Reduce,这本身就很奇怪,也不能解决所有的情况。
10、Spark 从何而来?Spark 相比于 Hadoop MapReduce 设计上有什么样的优势?
其实 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 设计模式,一些重量级的书可以参考。
其次是选择目标,如果你像做数据科学家学习 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 的,当然支持容量就小些。
13、Linkedin 都采用了哪些大数据开源技术?
在 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) 的复杂度。对应的设计细节,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 做内部通讯。而所有的这些就是想解放生产力,把重心放到用户体验,产品开发和迭代上去。
1、目前硅谷最火最有名的高科技创业公司都有哪些?
在硅谷大家非常热情的谈创业谈机会,我也通过自己的一些观察和积累,看到了不少最近几年涌现的热门创业公司。我给大家一个列表,这个是华尔街网站的全世界创业公司融资规模评选。它本来的标题是 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、有如此之多的高估值公司,是否意味着存在很大的泡沫?
看了那么多高估值公司,很多人都觉得非常疯狂,这是不是很大泡沫了,泡沫是不是要破了,是很多人的疑问。我认为在硅谷这个充满梦想的地方,投资人鼓励创业者大胆去做同样也助长了泡沫,很多项目在几个月的时间就会估值翻 2,3 倍,如 Uber,Snapchat 上我也惊讶于他们的巨额融资规模。那么这张图就是讲“新兴技术炒作”周期,把各类技术按照技术成熟度和期望值分类。
创新萌芽 Innovation Trigger”、“期望最顶点 Peak ofInflated Expectation”、“下调预期至低点 Trough of Disillusion”、“回归理想 Slope ofEnlightenment”、“生产率平台 Plateau of Productivity”,越往左,技术约新潮,越处于概念阶段;越往右,技术约成熟,约进入商业化应用,发挥出提高生产率的效果。纵轴代表预期值,人们对于新技术通常会随着认识的深入,预期不断升温,伴之以媒体炒作而到达顶峰;随之因技术瓶颈或其他原因,预期逐渐冷却至低点,但技术技术成熟后,期望又重新上升,重新积累用户,然后就到了可持续增长的健康轨道上来。
Gartner 公司每年发布技术趋势炒作图。今年和去年的图对比显示,物联网、自动驾驶汽车、消费级 3D 打印、自然语言问答等概念正在处于炒作的顶峰。而大数据已从顶峰滑落,NFC 和云计算接近谷底。
3、未来,高科技创业的趋势是什么?
我先提一个最近看的一部电影《Imitation Game》,讲计算机逻辑的奠基者艾伦图灵(计算机届最高奖以他命名)艰难的一生,他当年为破译德军密码制作了图灵机为二战胜利作出卓越贡献,挽回几千万人的生命,可在那个时代因为同性恋被判化学阉割,自杀结束了短暂的 42 岁生命。他的一个伟大贡献就是在人工智能的开拓工作,他提出图灵测试(Turing Test),测试某机器是否能表现出与人等价或无法区分的智能。
今天人工智能已经有了很大进步,从专家系统到基于统计的学习,从支持向量机到神经网络深度学习,每一步都带领机器智能走向下一个阶梯。
在 Google 资深科学家吴军博士(数学之美,浪潮之巅作者),他提出当前技术发展三个趋势,第一,云计算和和移动互联网,这是正在进行时;第二,机器智能,现在开始发生,但对社会的影响很多人还没有意识到;第三,大数据和机器智能结合,这是未来时,一定会发生,有公司在做,但还没有太形成规模。他认为未来机器会控制 98% 的人,而现在我们就要做个选择,怎么成为剩下的 2%?
4、为什么大数据和机器智能结合的未来一定会到来?
其实在工业革命之前(1820 年),世界人均 GDP 在 1800 年前的两三千年里基本没有变化,而从 1820 年到 2001 年的 180 年里,世界人均 GDP 从原来的 667 美元增长到 6049 美元。由此足见,工业革命带来的收入增长的确是翻天覆地的。这里面发生了什么,大家可以去思考一下。但人类的进步并没有停止或者说稳步增长,在发明了电力,电脑,互联网,移动互联网,全球年 GDP 增长从万分之 5 到 2%,信息也是在急剧增长,根据计算,最近两年的信息量是之前 30 年的总和,最近 10 年是远超人类所有之前累计信息量之和。在计算机时代,有个著名的摩尔定律,就是说同样成本每隔 18 个月晶体管数量会翻倍,反过来同样数量晶体管成本会减半,这个规律已经很好的 match 了最近 30 年的发展,并且可以衍生到很多类似的领域:存储、功耗、带宽、像素。
冯诺伊曼是 20 世纪最重要的数学家之一,在现代计算机、博弈论和核武器等诸多领域内有杰出建树的最伟大的科学全才之一。他提出(技术)将会逼近人类历史上的某种本质的奇点,在那之后全部人类行为都不可能以我们熟悉的面貌继续存在。这就是著名的奇点理论。目前会越来越快指数性增长,美国未来学家 Ray Kurzweil 称人类能够在 2045 年实现数字化永生,他自己也创办奇点大学,相信随着信息技术、无线网、生物、物理等领域的指数级增长,将在 2029 年实现人工智能,人的寿命也将会在未来 15 年得到大幅延长。
5、国外值得关注的大数据公司都有哪些?国内又有哪些?
这是 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),在按需计算上也是个技巧。
7、围绕在 Hadoop 周围的有哪些公司和产品?
提到 Hadoop 一般不会说某一个东西,而是指生态系统,在这里面太多交互的组件了,涉及到 IO,处理,应用,配置,工作流。在真正的工作中,当几个组件互相影响,你头疼的维护才刚刚开始。我也简单说几个:Hadoop Core 就三个 HDFS,MapReduce,Common,在外围有 NoSQL: Cassandra, HBase, 有 Facebook 开发的数据仓库 Hive,有 Yahoo 主力研发的 Pig 工作流语言,有机器学习算法库 Mahout,工作流管理软件 Oozie,在很多分布式系统选择 Master 中扮演重要角色的 Zookeeper。
8、能否用普通人都能理解的方式解释一下 Hadoop 的工作原理?
我们先说 HDFS,所谓 Hadoop 的分布式文件系统,它是能真正做到高强度容错。并且根据 locality 原理,对连续存储做了优化。简单说就是分配大的数据块,每次连续读整数个。如果让你自己来设计分布式文件系统,在某机器挂掉还能正常访问该怎么做?首先需要有个 master 作为目录查找(就是 Namenode),那么数据节点是作为分割好一块块的,同一块数据为了做备份不能放到同一个机器上,否则这台机器挂了,你备份也同样没办法找到。HDFS 用一种机架位感知的办法,先把一份拷贝放入同机架上的机器,然后在拷贝一份到其他服务器,也许是不同数据中心的,这样如果某个数据点坏了,就从另一个机架上调用,而同一个机架它们内网连接是非常快的,如果那个机器也坏了,只能从远程去获取。这是一种办法,现在还有基于 erasure code 本来是用在通信容错领域的办法,可以节约空间又达到容错的目的,大家感兴趣可以去查询。
接着说 MapReduce,首先是个编程范式,它的思想是对批量处理的任务,分成两个阶段,所谓的 Map 阶段就是把数据生成 key, value pair, 再排序,中间有一步叫 shuffle,把同样的 key 运输到同一个 reducer 上面去,而在 reducer 上,因为同样 key 已经确保在同一个上,就直接可以做聚合,算出一些 sum, 最后把结果输出到 HDFS 上。对应开发者来说,你需要做的就是编写 Map 和 reduce 函数,像中间的排序和 shuffle 网络传输,容错处理,框架已经帮你做好了。
9、MapReduce 模型本身也有一些问题?
第一:需要写很多底层的代码不够高效,第二:所有的事情必须要转化成两个操作 Map/Reduce,这本身就很奇怪,也不能解决所有的情况。
10、Spark 从何而来?Spark 相比于 Hadoop MapReduce 设计上有什么样的优势?
其实 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 设计模式,一些重量级的书可以参考。
其次是选择目标,如果你像做数据科学家学习 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 的,当然支持容量就小些。
13、Linkedin 都采用了哪些大数据开源技术?
在 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) 的复杂度。对应的设计细节,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 做内部通讯。而所有的这些就是想解放生产力,把重心放到用户体验,产品开发和迭代上去。
- 北京机房搬迁改造公司,系统集成有哪些公司?-2019-11-04
- 如何打造一个安全的网络环境?政府要做到这四点-2019-11-04
- 北京办公室网络布线,综合布线施工价格-2019-11-04
- 深信服产品专业上网行为管理,安全设备有保障-2019-11-04
- 两年内网络安全市场规模将达千亿级别?来看看详细分析-2019-11-04
- 北京炫亿时代专业机房设备除尘,机房网络改造-2019-11-04
- 企业如何保障移动办公的安全性?移动办公存在的七大安-2019-11-01
- 北京深信服AC-1000-A400产品租赁购买,专业IT上网行为管理-2019-11-01
- 互联网企业软件开发如何才能没有漏洞?专业工程师给出-2019-11-01
- 如何避免APP的“越权”行为?要靠制定相关法律法规-2019-11-01