全球的互联网大公司里面,如果说哪家公司最有争议性,亚马逊肯定是其中之一。在大数据发展历程中,亚马逊扮演的角色相当复杂,既曾是先驱者,也曾作为“吸血者”插管吸血开源社区。

此外,亚马逊不仅充分利用 Hadoop 生态圈壮大了自己,而且推出了一些特色化服务。亚马逊的大数据发展比较复杂,它既有对大数据发展作出里程碑式贡献的一面,也有利用了大数据圈的技术大量“插管吸血”却并不回馈社区的一面。 今天,我们一起来看看亚马逊的大数据故事。

Dynamo:NoSQL 的先驱之一

除了谷歌,其他公司(比如微软)也或多或少对于大数据时代的发展有一些特色贡献。但只有亚马逊的这篇名为《Dyanmo:亚马逊的高可用键值存储》(Dynamo: Amazon’s Highly Available Key-value Store)的论文,是唯一一篇可以和谷歌“三驾马车”并驾齐驱,具有同样影响力的论文。 这篇论文发表于 2007 年的操作系统顶级会议 SOSP 上,它们共同开启了大数据时代。

在 2017 年上海举办的 SOSP 会议上,这篇论文荣获了 SIGOPS 名人堂奖(Hall of Fame Award, HoF)。这是操作系统领域里面的大奖,专门用来表彰那些发表 10 年以上,对业界产生了深远影响的论文。

Dynamo 和 BigTable 功能上很像,也是一个 NoSQL。但是两者在实现方式上非常不一样。简单来说,BigTable 基于排序来实现的,而 Dynamo 则基于哈希去实现,当然技术细节不在本文的探讨范围之内。但是,值得注意的是,亚马逊第一次给大家展现了一个全新的键值存储系统(Key-Value Store)是怎么实现的。

Dynamo 也有开源的产品实现,即 Cassandra。Cassandra 先由 Facebook 开发并开源,后期则由 DataStax 公司维护。亚马逊 AWS 把 Dynamo 以 DynamoDB 的名字推出来给客户使用,现在 DynamoDB 是 AWS 历史最为悠久、用户量最大的产品之一。

Dynamo 论文发表之后,据说在亚马逊内部掀起了轩然大波。很重要的一个原因是,亚马逊传统上是不发表自己的核心技术的。 所以虽然说亚马逊有全世界最好的编译和软件部署系统阿波罗(Apollo)和最好的版本控制系统巴西(Brazil),但是外界对于亚马逊到底是怎么实现这些东西的并不知晓。

谷歌也在一定程度上奉行这个策略,但是要好一些。比如说,谷歌虽然公布了“三驾马车”,但那是在技术成熟,下一代产品基本就位的时候才公布上一代产品的。至于谷歌最核心的基于容器的调度系统,则有十余年一直被当作核心机密。直到 2015 年,因为 Docker 已经大行其道了才公开。

而亚马逊基本上是完全不公布的政策,而 Dynamo 显然打破了这个规则。有传言贝佐斯对于 Dynamo 团队发表这篇论文,导致亚马逊核心技术泄露表达了强烈不满。这个传言真假不得而知,但是不管怎样,我们能够看到亚马逊后来在核心技术论文发表方面,又小心翼翼起来。

Elastic MapReduce

如果说 Dynamo 和后来商业化的 DynamoDB 是亚马逊带给整个大数据领域不可磨灭的贡献,亚马逊作为大数据的“先驱者”也因为这篇论文而名垂青史了,Elastic MapReduce 这个云端产品带给亚马逊的则是滚滚财富。

伴随着 Hadoop 生态系统的成熟,很多围绕这个生态圈的创业公司诞生了,这包括后来很著名的 Hadoop 三大发行商:Cloudera、Hortonworks 和 MapR。亚马逊作为一个云厂商,也进入了这个市场,它推出的产品叫作 Elastic MapReduce。

在如何对待开源产品这个事情上,我们必须说,亚马逊和其他公司有很大不同。其他公司不论出于什么样的目的,都或多或少对开源产品本身做出了很大的贡献。Hadoop 的三大发行商在很大程度上维护了 Hadoop 基础架构的开发,Cloudera 和 Hortonworks 一度是 Pig 和 Hive 最重要的维护者。各大社交媒体公司也纷纷开源了很多自己的系统,来丰富整个生态圈。这些公司都对 Hadoop 核心代码做出了很多贡献。

但是亚马逊对于整个 Hadoop 生态圈的贡献,除了如何去连接它自己的云服务(比如 S3)以外,善乏可陈。亚马逊做的事情,典型的做法就是把已成熟的开源社区产品拿过来,在内部做二次开发,以便能够在亚马逊的云端很好得运行。然后,就没有然后了。亚马逊并不会给开源社区贡献自己的核心代码。

一方面来说,因为 Hadoop 生态圈本身就意味着对机器资源的大规模消耗。所以任何使用 Hadoop 的人,在亚马逊的 AWS 服务上,都必然会支付不菲的金钱。因此,亚马逊的 AWS 得到了快速发展。

另外一方面,S3 本身就是世界上最大的存储服务,无数公司把数据存储在 S3 里。AWS 的 Elastic MapReduce 可以有效整合 S3 的数据读写,这也让用户更加离不开 AWS 这个生态圈。

如果我们回过头来看,整个大数据历史的发展中,如果说哪个公司最得利,没有任何一家公司比得上亚马逊的,大数据的发展很大程度上也是亚马逊云计算业务的发展过程。那么,亚马逊对开源的贡献是什么呢?对 Hadoop 生态圈的贡献又是什么?或许,在这一点上还是未来值得思考和期待的事情吧。

有关亚马逊的大数据先驱者和“插管吸血”开源社区的故事就讲到这里了。亲爱的读者,你觉得这种状态是 Hadoop 开源社区错了,被亚马逊“合理利用”了呢?还是亚马逊本身的做法值得商榷呢?