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.

63 lines
7.1 KiB
Markdown

2 years ago
# 079 | 微软的大数据发展史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不肯搬迁在外部也只有沃尔玛买单。为什么会是这样一个结果呢
这个系统失败的原因有很多,在我看来主要有以下两点。
1. 用户需要重新学习一种叫作U-SQL的语言才能充分发挥这个系统的性能。U-SQL其实是SCOPE的改造版但改造得不伦不类。为什么这么说首先是SCOPE语言很灵活但U-SQL却很死板。其次是SCOPE在数据类型上向C#兼容而U-SQL却决定一半的地方兼容SQL另外一些场景兼容C#,兼容规则因此搞得非常复杂。
2. 这个系统和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 BuildCosmosDB作为大数据领域唯一被大会主题报告提及的业务展示了非常靓丽的业绩。而且微软今年又为CosmosDB增加了全球多节点同时写入的功能。这一切都说明CosmosDB业已成为微软云端大数据产品线上最为耀眼的一款产品。
总体上来说微软云计算部门的大数据之路无论是拥抱开源的HDInsight还是自己努力研发的Azure Data Lake又或者是具备独特地位的CosmosDB投入都是巨大的。
但目前来看只有CosmosDB既具有特色又很成功其他产品就不过尔尔了。HDInsight的性能问题Azure Data Lake的定位问题都是微软云计算部门大数据上表现欠佳的地方。
在大数据时代微软不可谓不努力但是产品的表现参差不齐没有表现出一个曾经的软件帝国的创造力和统治力。所以一个公司如果成为时代的追随者是很难在产业中有统治地位的。CosmosDB是这些产品里少有的亮点一方面是因为解决了客户的实际需求一方面是产品有独特的竞争优势。
因此,我们可以看到,在大数据时代,创新,尤其是解决实际需求的创新,依然是一个公司确立行业优势最重要的因素。