全球的互联网大公司里面,如果说哪家公司最有争议性,亚马逊肯定是其中之一。在大数据发展历程中,亚马逊扮演的角色相当复杂,既曾是先驱者,也曾作为“吸血者”插管吸血开源社区。
此外,亚马逊不仅充分利用Hadoop生态圈壮大了自己,而且推出了一些特色化服务。亚马逊的大数据发展比较复杂,它既有对大数据发展作出里程碑式贡献的一面,也有利用了大数据圈的技术大量“插管吸血”却并不回馈社区的一面。 今天,我们一起来看看亚马逊的大数据故事。
除了谷歌,其他公司(比如微软)也或多或少对于大数据时代的发展有一些特色贡献。但只有亚马逊的这篇名为《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团队发表这篇论文,导致亚马逊核心技术泄露表达了强烈不满。这个传言真假不得而知,但是不管怎样,我们能够看到亚马逊后来在核心技术论文发表方面,又小心翼翼起来。
如果说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开源社区错了,被亚马逊“合理利用”了呢?还是亚马逊本身的做法值得商榷呢?