吾生也有涯,而知也无涯。大数据的这摊子铺开以后,就显得越来越大。而进入微软以后,因为以前微软吃的官司,但凡微软内部做什么系统的部门就不允许去看open-source相对应的东西。做IE浏览器的不能看firefox的代码。做大数据的,我也就不能看Hadoop以及其他相关的代码。所以越到后面,我的知识就越依赖于对论文的阅读。而论文的阅读有其明显的局限性,那就是眼高手低没有实践经验。大数据系列也写到了13,我想接下来的系列里面我会越来的越力不从心的和大家讨论技术的细节,很多东西就越发的显得“高屋建瓴”般的眼高手低。
我们知道大公司都有很多毛病,比如说重复造轮子。微软作为大公司里面的典型,自然也是免不了。做Dryad的人和Bing的蜜月期过去以后就撂挑子不干了,而产品组又必须moving forward。所以这就产生了产品组做的是一个叫SCOPE的东西,但是研究院则搞出了自己的DryadLINQ。
要理解DryadLINQ,我们先要知道LINQ是什么。LINQ是Language Integrated Query, 一个C#的语言特性,在C#3.5的时候被引入。基本思想是给C#增加了query的能力,使用类似functional programming的编程方式。那些熟悉Scala的人对于LINQ的语法表达一定不会陌生。LINQ支持很多标准的查询方式,包括SELECT, WHERE,JOIN, AGGREGATE等等。LINQ在C#里面的实现是一个非常优美的编程模式,现在C#已经开源,所以这方面的code对微软以外的人也可以看到了。LINQ实现了provider的概念,只要实现一个provider以后那么LINQ就可以跑在不同的东西上,包括SQL, XML, Arrary等等。
DryadLINQ实际上是一个LINQ的provider的实现。通过对C#实现对LINQ的支持,DryadLINQ可以让背后的数据跑在一个Dryad的环境下。文章上面的图大致描述了一个DyradLINQ的体系架构。值得说明的是,DryadLINQ实际上通过对IL(.net虚拟机的语言)层面的分析,可以做很多传统数据库上才做的优化,从而可以生成更加有效率的执行方案。其背后的运行环境是一个Dryad平台。
这个产品的产生到推广在微软内部经历了很多的的波折。首先一点来说,微软大数据最大的客户是Bing Search。因为有一个叫做Cosmos的存储和查询系统。这也是微软内部Dryad环境下最scalable最为成熟的一个平台。但是因为这样那样的原因,跑在上面的语言是SCOPE。所以DryadLINQ也就没有了市场。
其次DryadLINQ所采取的对C#的整合的方式使得C#成为使用的入口。这个做法在Google里面有一个非常非常类似的approach,叫做Flume。不是开源的那个Flume。Flume最开始叫FlumeJava,大致上也是把MapReduce之类的东西整到后面去,前面成为简单的函数调用。后来又发展出了Flume C++。我们可以说在Google里面这个方式非常的成功,而在微软却没有起来。我想很重要的有两个原因。第一是微软毕竟是传统软件公司,需要数据分析和处理的地方还是少数。第二是即使用到了数据的分析和处理,其实那些做数据分析处理的人更喜欢写SQL而不是写C#。那么用了DryadLINQ这个方法,强制大家写C#自然而然的就没那么多吸引力了。Google则不同,全员码农全员需要分析数据,码农么,写JAVA写得酸爽,写C++写的牛13,写SQL写的就显得自己傻13了。
但是我们的微软研究院的人锲而不舍的一直在努力。终于也让他们找到了一个地方,就是微软的HPC–High Performance Computing。这更像现实生活里面的小公司用hadoop,HPC一般几十台机器最多百来台机器的一个产品。于是拉了一只team,把这个东西产品化,做了一个东西叫LINQ to HPC。这个产品一直在测试。然后临最后一脚的时候被cut了。据说公司上层决定以后走Hadoop路线。既然走了Hadoop路线,那么就一起MapReduce就好。于是辛辛苦苦的工作了很多年的researcher以及那个team的人都各奔东西去了。当然,伴随沈向洋上任微软研究院院长之后发生的裁员,整个微软硅谷研究院的人都给裁了,做DryadLINQ的Yuan Yu也跑去Google家做Tensorflow去了。
这个产品我用过,给我个人的感觉来说确实是相当的不错。我用过JAVA开发软件也用过C#,必须说单纯从编程语言的角度来说,C#比JAVA强太多。但是这个世界已经是开源的世界,JAVA的世界,Linux的世界了。Google的神话携带Hadoop的MapReduce,估计也亮瞎了微软领导们的眼。类似的事情不也发生在Facebook么?自己仿造亚马逊的Dynamo搞了个Cassandra,结果却自己抛弃了自己的亲儿子,上了HBase,据说决定的原因是FB更相信Google的技术构架而不是华盛顿湖对岸那个卖书起家的。然而今时今日在开源社区Cassandra活的不要太滋润。
转自:飞总聊IT