104|微软的大数据发展史:Azure的大数据发展
文章目录
一、HDInsight:一个云端 Hadoop 版本
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 的对标中,除了一些政治因素外,其他方面鲜有败绩。
二、Azure Data Lake 的诞生
很长一段时间里,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,于是鲜有用户愿意尝试这个系统。
三、大数据平台 CosmosDB
云计算部门的另外一个大数据平台是 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 是这些产品里少有的亮点,一方面是因为解决了客户的实际需求,一方面是产品有独特的竞争优势。
因此,我们可以看到,在大数据时代,创新,尤其是解决实际需求的创新,依然是一个公司确立行业优势最重要的因素。
文章作者 anonymous
上次更新 2024-02-08