时长07:14大小3.80M
Azure 是微软云计算的品牌,而云计算是给客户提供服务的。所以,微软云计算平台的大数据发展方式,与其他解决内部需求的项目不同,最初主要围绕 Hadoop 生态圈展开。
Hadoop 诞生时,没有考虑过 Windows 上稳定运行的问题,因为做 Hadoop 的企业是雅虎、Facebook、LinkedIn 等湾区互联网企业,这些企业都用免费的 Linux,不用昂贵的 Windows,它们没必要考虑 Hadoop 在 Windows 下运行的问题。
但是,Hadoop 的壮大让微软感受到了危机。如果每个使用 Hadoop 的企业都用 Linux 了,数据就会被存到 Linux 里,各种应用服务也有可能就渐渐转向 Linux。
微软担心大数据系统的出现和普及,尤其是 Hadoop 生态圈的壮大,会威胁到 Windows 的销售,导致 Windows 服务器的业务下降。因此微软云计算部门选择了和 Hortonworks 合作,把 Hadoop 在 Windows 上的稳定运行当作头等大事对待。
微软云计算部门和 Hortonworks 对接的,是微软内部负责研发一个叫作 HDInsight 的云端 Hadoop 版本的团队。这个团队有两大任务:其一是和 Hortonworks 一起,实现 Hadoop 在 Windows 上的稳定运行;其二是为微软提供云端的 Hadoop 版本,也就是 HDInsight。
从微软给这个团队定义的任务出发,HDInsight 团队很好地完成了这两个任务。但是 HDInsight 有一个比较大的问题:性能差。简单来说就是,HDInsight 在对接 Hadoop 文件系统和微软的云存储 Azure Blob Store 时,对接得不是很高效,因此 HDInsight 的运行效率很低。
HDInsight 作为云端的产品,不但对外推广,也在内部大量寻找用户,但是因为性能问题内部用户寥寥无几,没有部门愿意买单。
我在上一篇文章中提到过,必应部门做了一个数据分析平台 Cosmos。这个平台和 HDInsight 比起来,优势主要就体现在性能上。而且,Cosmos 作为数据分析工具,只要能分析数据就好,不需要考虑是不是兼容 Hadoop。因此,Cosmos 在和 HDInsight 的对标中,除了一些政治因素外,其他方面鲜有败绩。
很长一段时间里,HDInsight 和 Cosmos 在微软内部都是竞争对手,双方都希望微软的各大部门采用自己的平台,然而 HDInsight 因为性能问题每战必输。
而在 Cosmos 被合并到云计算部门后,这两个产品同处在了一个组织下面,输赢不再重要,竞争关系也不复存在了。但是因为长期竞争的关系,两个团队私下并不和谐。
Cosmos 被重组到云计算部门后,微软聘请了著名的数据库领域的专家,前威斯康辛大学教授、前雅虎副总裁拉 · 罗摩克里希纳恩(Raghu Ramakrishnan)领导这个团队。为什么聘请这个人,因为云计算部门想做一款新产品,我们姑且简单地理解为是做一款面向外部客户的 Cosmos 吧。
这个新的团队领导认为,对外服务的 Cosmos 是一款可以连接和处理 Azure 上所有数据源的数据查询引擎。因为他的这个想法,就需要对 Cosmos 做伤筋动骨的改动。
这样大的改动只获得了一部分人的支持,这些人得到了升迁和资源。而持反对意见的人,慢慢淡出了权力中心,陆续离开微软,我也正是在那个时候去了 Tableau。
然而,这个 Cosmos 新版本的开发难度远远超出了他的心理预期,交付日期一拖再拖。2016 年,这个产品在延期两年后终于以 Azure Data Lake 这个名字发布了。
无论微软内部和外部,这个团队都极力推动这款产品,但买账的人并不多。微软内部大部分选择了老版本的 Cosmos 不肯搬迁,在外部也只有沃尔玛买单。为什么会是这样一个结果呢?
这个系统失败的原因有很多,在我看来主要有以下两点。
用户需要重新学习一种叫作 U-SQL 的语言,才能充分发挥这个系统的性能。U-SQL 其实是 SCOPE 的改造版,但改造得不伦不类。为什么这么说?首先是 SCOPE 语言很灵活,但 U-SQL 却很死板。其次是 SCOPE 在数据类型上向 C# 兼容,而 U-SQL 却决定一半的地方兼容 SQL,另外一些场景兼容 C#,兼容规则因此搞得非常复杂。
这个系统和 C# 紧紧地绑定在一起,而 Hadoop 生态圈完全基于 Java,于是鲜有用户愿意尝试这个系统。
云计算部门的另外一个大数据平台是 DocumentDB,它是市面上很少见的可以和 MongoDB 竞争的产品。有关 DocumenDB 的功能分析,我在之前的文章里已经讲过。
DocumentDB 在后来的一次升级中被改名为 CosmosDB。这次升级的主要目的是把数据模型从 MongoDB 一种提升到了若干种,包括 MongoDB 的半结构化数据、图数据库等,从而使 CosmosDB 能够更灵活地支持不同的应用。
CosmosDB 推出时,市面上还找不到同类竞品。当然,这个说法其实不完全准确,因为开源社区在 2012 年曾经有一个叫作 FoundationDB 的项目,和 CosmosDB 的做法很像,底层是统一的存储方式,上面支持不同的数据模型。但是 FoundationDB 被苹果收购之后就不再开源,一直到 2018 年 5 月这才重新开源出来。这种产品的独特性给了微软一个很好的市场切入点。
微软的云计算部门在 CosmosDB 上投入相当大。作为 MongoDB 的竞品,CosmosDB 也表现出了良好的性能和扩展性,并解决了 MongoDB 长期以来为人诟病的安全问题。因此,CosmosDB 发布之后业务量一直迅猛增长,最终成了微软大数据服务里面唯一的亮点。又因为这是一个只在 Azure 上发售的服务,一定程度上也给 Azure 带来了不少的流量。
在 2018 年 5 月刚结束的年度微软开发者大会(Microsoft Build)上,CosmosDB 作为大数据领域唯一被大会主题报告提及的业务,展示了非常靓丽的业绩。而且,微软今年又为 CosmosDB 增加了全球多节点同时写入的功能。这一切都说明,CosmosDB 业已成为微软云端大数据产品线上最为耀眼的一款产品。
总体上来说,微软云计算部门的大数据之路:无论是拥抱开源的 HDInsight,还是自己努力研发的 Azure Data Lake,又或者是具备独特地位的 CosmosDB,投入都是巨大的。
但目前来看,只有 CosmosDB 既具有特色又很成功,其他产品就不过尔尔了。HDInsight 的性能问题,Azure Data Lake 的定位问题,都是微软云计算部门大数据上表现欠佳的地方。
在大数据时代,微软不可谓不努力,但是产品的表现参差不齐,没有表现出一个曾经的软件帝国的创造力和统治力。所以,一个公司如果成为时代的追随者,是很难在产业中有统治地位的。CosmosDB 是这些产品里少有的亮点,一方面是因为解决了客户的实际需求,一方面是产品有独特的竞争优势。
因此,我们可以看到,在大数据时代,创新,尤其是解决实际需求的创新,依然是一个公司确立行业优势最重要的因素。