大师兄

082 | 阿里巴巴的大数据故事:数据分析平台发展史

阿里巴巴是国内最早开始做大数据的公司,也是国内最早开始做云计算的公司。阿里巴巴的数据分析平台非常齐全,今天我带大家看一看阿里巴巴的大数据发展历史。我们首先看看数据分析平台方面的发展。

MaxCompute

阿里巴巴作为国内最大的互联网公司之一,也需要一个大数据分析平台。阿里巴巴发展大数据平台,走了两条路:一部分业务用的是开源的Hadoop,另外一部分则用了自己研发的平台。这个自己研发的平台最初叫ODPS,也就是现在的MaxCompute。

阿里巴巴的平台研发,时间上比微软、谷歌或者雅虎起步的时候稍微晚了一点。这个平台最初主要做法是前端和Hive兼容,使用了Hive的语法,后端从查询优化到查询的执行,到数据的存储都是自己开发的。当时负责开发的是徐常亮。

平台的开发一开始并不顺利。但是通过几年的磨合,这个平台也开发得有模有样了,和阿里内部使用开源Hadoop的组并驾齐驱。到后来,很多阿里内部业务都泡在了MaxCompute上。当然,阿里巴巴的MapReduce叫作E-MapReduce,至今依然是阿里云支持的服务之一。

MaxCompute在2015年迎来了一次大换血。当时微软Cosmos部门负责SCOPE开发的领导,微软合伙人之一的周靖人加盟阿里云,成为阿里的副总裁兼首席科学家,MaxCompute成为了他手下负责的方向之一。

此后随着曾在微软SCOPE队伍里的中国人的加盟,MaxCompute的负责人换成了微软来的关涛,同时加盟的还有后来MaxCompute的总架构师林伟。这群新来的人对MaxCompute的整个框架做了很大的改动,让整个框架更加得模块化。在2017年的时候,MaxCompute 第2版也顺利发布了。

目前阿里巴巴内部的很多数据分析任务都跑在MaxCompute上。这也是就我所知除去谷歌和微软以外,全球第三家不基于Hadoop生态圈,而是基于自己开发的系统做大数据分析的公司。

OceanBase

OceanBase是另外一个非常重要的产品,严格一点来说它属于蚂蚁金服集团。OceanBase是阿里巴巴集团的新一代分布式金融关系数据库,主要面向对象是蚂蚁金服集团内部的各种金融业务。

阿里巴巴公司建立的早期,业务主要跑在Oracle的数据库上。但是随着时间的推移,Oracle数据库越发无法支撑阿里巴巴的业务规模,而Oracle的昂贵价格也让阿里巴巴的运营成本居高不下,这就有了用自己的软件代替Oracle数据库的想法。

阳振坤老师是OceanBase项目的负责人。根据2017年财富排行榜公布的信息,他的目前身价是70亿元。但是阳老师至今依然领导OceanBase的工作,为理想而奋斗。

OceanBase起始于2009年,最初是支付宝钱包项目的一个子模块。后来OceanBase独立出来,慢慢做成了一个通用的数据库系统,并被用到了蚂蚁金服集团各个不同的项目上。2014年的OceanBase是第一个稳定版本,还一度开源过。但是那个时候的OceanBase有一个问题,数据写入时只能从一个节点写入,会造成写操作的瓶颈。

伴随蚂蚁金服业务规模的扩张,这个问题导致OceanBase在很多项目上成为瓶颈。2014年开始研发的新版本最终将这个问题解决掉了。2017年的时候,按照蚂蚁金服集团非官方的说法,OceanBase已经全面取代了Oracle,成为蚂蚁金服主要业务的、唯一的数据库平台。

PolarDB

阿里巴巴早年大量使用Oracle,所以培养出了中国最早的一批Oracle高手。但是阿里巴巴也是大量使用MySQL的,所以集团内部也培养出了第一批MySQL的高手。

以俞峰为首的团队是阿里巴巴内部对MySQL最为精通的团队之一。这个团队对MySQL进行了大量改良,使之支持了阿里巴巴的很多业务,其核心业务主要是在非金融方面。包括MySQL的两地三中心主从备份的版本,都是从这个团队里出来的。

2017年正式发布的PolarDB,是这个团队把这种MySQL的认知发扬光大以后最新的云端产品。如果要对标业界的产品,那么最合适的应该是亚马逊的Aurora。但是从技术层面上来说,PolarDB和Aurora有很多不一样的地方。

PolarDB兼容MySQL的API,后端则通过最新的硬件和软件相结合的方式,使性能达到了MySQL的10倍,同时还可以有效地处理大量的并发请求。这个系统无疑代表了阿里巴巴大数据方面一个很高的里程碑。

当然,在阿里巴巴旗下的数据分析平台,还不只这几个。比如说,阿里巴巴有HybridDB for Postgress,我们可以认为这是类似亚马逊Redshift的产品。此外,阿里巴巴还有对主要的NoSQL开源产品的支持,比如说MongoDB、Redis。这些产品都在ApsaraDB的品牌下。

重叠的功能

每次我面对阿里巴巴的产品时,都有一个很大的困惑。这些产品看起来是阿里巴巴内部不同的团队独立开发出来的,然后它们作为不同的产品出现在大家面前。

比如说,到今天如果要我在OceanBase和PolarDB之间给用户推荐一下,我会不知如何决策。因为从功能上看,这两者都是做事务处理的数据库。从宣传上看,两者都很牛,都支持了双十一,当然是在不同的业务上。

这种困惑并非只有我有,知乎上类似的问题很多,各种回答也是众说纷纭,有时候项目负责人也会亲自上场回答问题。但是看完答案, 我的困惑更多了。在阿里巴巴发展的不同时期,不同的团队开发了功能类似的产品,这很正常。但是如果这些产品都一股脑儿摆在用户面前让用户挑选的话,商业上就不知道怎么评价了。