You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

7.2 KiB

078 | 微软的大数据发展史必应的Cosmos

微软的大数据发展史上另外一支非常重要的队伍是必应Bing搜索引擎下的Cosmos团队。

2007年当时的CEO 史蒂夫 · 鲍尔默Steve Ballmer 决定大举进军搜索市场和谷歌开战。微软为这场战争投入了很多资源包括对领导层大换血调集了包括现任CEO 萨蒂亚 · 纳德拉Satya Nadella和现任EVP沈向洋在内的很多人才。之后微软更是从雅虎“挖”了陆奇掌管整个部门。

随之微软将MSN搜索改名为必应。我们知道谷歌的“三驾马车”,最初是为它的搜索业务服务的。姑且不谈微软的搜索业务发展得怎样,但它需要建立类似“三驾马车”的基础架构,才能够支撑前端的搜索。 为此它秘密启动了一个叫作Cosmos中文代号“宇宙”的项目也算是正式开始了和谷歌搜索业务的竞争而这个时间几乎和Hadoop诞生的时间一致。

简单来说Cosmos就是微软的大数据平台。 2000年时微软利用垄断优势扼杀了硅谷企业Netscape从此就难以再融入硅谷的圈子了。所以在2007年时微软和硅谷的公司们格格不入也无法同雅虎等公司共建Hadoop平台。经过权衡之后微软决定自己创建一个这样的平台。

2007年前后微软硅谷研究院和必应搜索部门还维持着良好的合作关系从排序算法到底层基础架构到数据中心的建设微软研究院都参与了必应搜索系统的研发。在这段合作关系中最为著名、重要的人物就是前文提到过的迈克尔 · 伊斯拉德Michael Israd

Cosmos最开始的目标是解决必应搜索如何存储互联网上所有数据的问题。简单地说微软需要一个类似GFS谷歌文件系统的文件系统才能够备份互联网数据并存储各种各样的日志文件。为了开发这个文件系统当年微软召集了好几个牛人包括Cosmos的第一任架构师。但是这个架构师只在微软待了一年多就因为政治斗争去了谷歌。

Cosmos文件系统的架构并不是全新的它在很大程度上遵循了谷歌文件系统的设计宗旨因此它的入门文档就是谷歌文件系统的论文。说地更直接一点Cosmos是仿制了谷歌文件系统。

如果说Cosmos的文件系统有什么值得称道的地方可能最值得一提的就是它的压缩算法。Cosmos没有采用任何公开的压缩算法而是使用了它的第一任架构师自己发明的压缩算法。从压缩的空间和解压缩的时间上来讲这个算法都领先于当时市面上已有的压缩算法。

Cosmos搭上文件系统后很自然地就需要对数据进行处理了。当时正值迈克尔和必应的“蜜月期”迈克尔很自然地推荐了自己的Dryad因此Cosmos上第一次出现了和谷歌很不一样的地方Cosmos的执行引擎是Dryad而并非MapReduce。

然而迈克尔在成功推销Dryad后和必应的关系却越来越不好具体原因已经无可查证。其中有一个是我认为比较靠谱的说法Dryad的Bug非常多需要经常修复但是迈克尔觉得产品已经推销出去了修Bug就不是他的事情了而必应认为迈克尔的产品出了问题当然得他自己来修。

后来必应为了让Dryad在Cosmos里稳定运行花了很多精力做优化最重要的优化是改写了Dryad里可能造成性能瓶颈的地方结果这个优化却将Dryad改得“面目全非”以至于Cosmos、微软硅谷研究院以及HPC的Dryad版本都不太一样了。

随着Cosmos项目的进行Dryad的弊端越来越多地显示出来用户无法在Dyrad里面高效率地完成数据查询和分析任务写程序就像是在写汇编。因此Cosmos急需在改良后的Dryad上再封装一层提供一个高级查询语言这时SCOPEStructured Computations Optimized for Parallel Execution就登场了。

SCOPE算得上是Cosmos区别于其他系统最大的地方 对微软里面要使用Cosmos的人来说SCOPE无疑是他们和Cosmos打交道必须学会的查询语言。

SCOPE最初是由微软雷德蒙德研究院的比尔 · 希尔夫Bill Ramsey发明的但是随着微软雷德蒙德研究院另外一位重量级人物如今阿里巴巴集团副总裁兼阿里云首席科学家周靖人的加入SCOPE变得不一般起来。

简单地说如果Dryad是一个有向无环图的执行引擎SCOPE则是一个类似于Pig的高级数据流语言但是它又在易用性和性能上和Pig不太一样。

在易用性上SCOPE具有以下特点。

  1. 它有一个强类型系统完全兼容C#类型系统。虽然当时C#在微软外部名声不显但在微软内部是第一开发语言。所以SCOPE选择了这个类型系统自然而然增加了可用性。

  2. 它提供了大量高级的查询功能比如支持写类似SQL的查询语句。

  3. 它还提供了类似MapReduce的扩展功能。

  4. 它和C#的整合做得很好。

而在性能上的不同是SCOPE区别于其他系统的关键部分。SCOPE的性能远远超过了Hive主要体现在以下两个方面

  1. SCOPE使用了自动代码生成技术可以针对每个查询直接生成C++代码。这样做虽然增加了编译时间但是查询速度要快很多。因为编译只会进行一次而查询速度的提升涉及了每条记录的查询所以对于需要大量时间进行大规模数据处理的情况这个自动代码生成技术为SCOPE提速很多。

  2. SCOPE的查询优化做得非常好而其他很多系统不具备这个创新性的功能。之所以SCOPE可以实现这个创新是因为它基于Dryad可以很灵活地生成图而不必局限于MapReduce。

Cosmos在必应取得成功后被迅速应用到微软的其他业务部门包括Windows、Xbox、Office365等等。

Cosmos的队伍在几年内迅速膨胀阵容也非常强大。它的最高领导人是微软的VP或者院士二线经理都是微软合伙人一线经理也得达到首席经理的级别而且其他成员在微软的职务也都非常高。这样的高配至今我还没在微软的其他部门见过。

Cosmos后来又开始做流计算和交互式查询方面的查询引擎这两个项目取得了一些成绩但与Cosmos其他项目的成绩比起来还是要差一些。

2013年在史蒂夫倡导的“同一个微软”One Microsoft的大重组中微软将Cosmos从必应分了出去把它合并进了云计算和企业事业部的数据处理部门。这次合并后必应搜索部门丧失了对Cosmos项目的主导权而新东家对Cosmos的未来看法不同。

未来一年多的时间里Cosmos的队伍经历了成立以来最大的波折。Cosmos团队人员纷纷出走最终负责Cosmos核心内容的成员各奔东西我也在那个时候离开了微软。

很难说“同一个微软”的理念是对是错但有一点可以肯定调整后Cosmos的发展停滞了。微软必应的大数据故事也就此告一段落。