随着大数据的发展,数据处理变得越来越重要,亚马逊的云端数据处理和分析服务也逐渐多起来。亚马逊的这些服务,除去已经提到的 DynamoDB 和 Elastic MapReduce,还有很多。它们的来源大致分为两种:一种是自己开发的,另外一种则是拿开源的包装一下。今天我们就来看一看这些服务。

Redshift

Redshift 是亚马逊比较早的一个基于云的数据仓库系统。Redshift 是一个兼容 PostgreSQL 8.0.2 版本的数据仓库系统,前端对 SQL 语言的解析复用了 PostgreSQL 8.0.2 版本的源代码,后端最初是基于一家亚马逊投资的公司 ParAccel 的并行数据仓库处理技术。Redshift 在 2012 年以 Beta 版发布,2013 年 2 月正式亮相。

Redshift 无疑是亚马逊最为成功的数据处理云服务之一,或许我们都不需要加“之一”这种说法。Redshift 自诞生开始就受到了中小型企业的欢迎,很多大型企业(比如 Airbnb)也一度使用它。

Redshift 到底有多牛?证据之一,在 2017 年的年度大会 OpenWorld 上,Oracle 创始人拉里 · 埃里森(Larry Elison)在发表主题演讲时,把 Redshift 作为 Oracle 的唯一对标的产品进行了比较。Oracle 在数据库领域的建树,决定了任何一个被 Oracle 作为敌人对待的人,都是在这个领域里面取得了相当成就的。这一次,Redshift 终于“荣幸”地成为了“靶子”。

Redshift 这款产品,长久以来都有自己独立的数据存储方式,用户需要从其他地方把数据导入 Redshift 才可以使用。2017 年 4 月,亚马逊发布了叫作 Redshift Spectrum 的新功能,从而允许 Redshift 直接访问存储在 S3 上的文件。

这个新发布的功能,给业界带来了相当大的震撼。结合亚马逊 S3 存储的无敌和 Redshift 的查询功能,这进一步强化了亚马逊在云端数据处理上的能力。

Redshift 在市场上最大的竞争对手是 Snowflake,这是一家云端弹性数据仓库的创业公司。有关 Snowflake 的故事,我会单独介绍。

Aurora

Aurora 是亚马逊推出的第二个数据库云端服务,2014 年底推出。如果说 Redshift 是服务于数据仓库和数据分析的,Aurora 主要是亚马逊用于事务处理的服务。

Aurora 和 MySQL 5.6 版本兼容,其存储引擎和 InnoDB 兼容。2017 年的时候,亚马逊又推出了和 PostgreSQL 兼容的 Aurora 数据库。这样一来,两大开源数据库都兼容了。

Aurora 是亚马逊另外一款在云端受欢迎的数据库。亚马逊自己公布的数据显示,Aurora 的性能比传统 MySQL 要快 5 倍,性能提升主要是源于亚马逊自己设计的,属于商业机密的基于 SSD 的存储结构。

Aurora 团队在 2017 年发表了一篇论文,介绍了 Aurora 的实现细节。其中最为创新的地方在于计算引擎往存储层写入东西的时候,可以做得非常轻量级,只需要把日志文件记录传下去就好,文件系统本身实现了对数据的整理和冗余的保证。

结合 Aurora 和 Redshift,亚马逊拥有了关于数据仓库和事务处理全方位的解决方案,这也让它在云端数据库领域越发显得有竞争力。

Athena

Athena 是亚马逊的一个查询服务,它允许用户直接查询存储在 S3 中的数据。和 Redshift 以及 Aurora 不同,Athena 是 Serverless 架构的,这个服务可以按照计算的需要自动起虚拟机,就能够进行查询。用户不再需要显式的起虚拟机,大大的方便了用户的使用体验。

此外,它与 Aurora 以及 Redshift 还有一点不一样,Athena 是一个拿来主义的产物。它基于开源项目 Presto,这个项目在 Facebook、Airbnb、京东等很多公司都被广泛使用。实际上,按照公布的信息来看,Redshift Spectrum 也是基于 Presto 的技术。

亚马逊当然是对 Presto 进行了很多的改进。但是以亚马逊一贯的作风,这些改进并没有被重新贡献回开源社区。所以指望亚马逊在从开源吸血的时候能够反馈社会,可能过于乐观。

Kinesis

Kinesis 是亚马逊平台上另外一款重要的产品,它主要针对的是对流数据的导入和分析。从某种程度上来讲,Kinesis 平台对应的开源产品是 Kafka。这一次,亚马逊选择了不用 Kafka,而是自己开发一套具有竞争意义的产品。

这是一个我不太理解的决定。因为 Kafka 在开源社区里面是质量挺高的一款软件,它的用途也很广泛,充分被人证实了是靠谱的选择。亚马逊这个非常擅长“拿来主义”的公司,这次竟然选择了自己去建一个系统。

我后来注意到,这个团队的主管人员是微软里面早年做流计算平台出身的。我想可能这位主管人员觉得,自己的经验搭建一个新产品可能会比 Kafka 更成熟更先进。至于实际效果,我们还需要时间去验证。

但是不管怎样,作为在 AWS 上流计算的唯一选择,Kinesis 推出以来还是吸引了不少用户。这个产品无论如何,结果都应该不会太差。只要 AWS 本身表现可以的话,流计算总是有需求的。

Glue

Glue 是亚马逊 2017 年最新推出来的云计算服务。它的主要目标是 ETL,ETL 是数据管理整个生态周期中很重要的一环。以前用户需要把数据导入 Redshift 之类的数据库时,需要自己去写 ETL 的管道(pipeline),这无疑非常不方便。

Glue 的推出是亚马逊想要弥补这块市场缺失必然的一步。至于为什么到 2017 年才提上日程,我想数据处理的产品,核心的还是在数据处理,而数据的导入,很多用户有自己成熟的解决方案,其优先级到底有多高不好说。

QuickSight

严格讲,QuickSight 不是一个数据处理分析工具,而是一个数据可视化服务,主要的服务对象是商业智能仪表盘(BI dashboard)。

亚马逊主推的 QuickSight 和传统的 BI 领导者比起来,还有很多的问题,比如说功能上比较单一。但是它主要的优点是成本低廉,又和亚马逊云端的其他产品紧密集成。所以对于中小企业,不需要太复杂 BI 功能的,这是一个很好的选择。

我们可以看到,亚马逊在云端已经构建了非常完善的大数据处理生态圈,这其中既有开源的,又有自己构建的,这个生态圈足以让亚马逊对任何一个传统的和云端数据处理的提供者展开竞争。

亚马逊在整个大数据的发展历程里,通过 Dynamo 产品给大数据的发展作出了巨大贡献,也体现了一个业界领先企业的创新能力。很多其他的产品,也展现出了亚马逊良好的创新能力。

但是亚马逊从 Hadoop 开源社区获得了很多的便利,却不愿意把自己的改进反馈给开源社区,实际上这种做法动摇了开源社区良性发展的基础,树立了一个坏榜样。所以对于亚马逊在大数据发展过程中的功与过,我们只能以一种很复杂的态度去看待,无法一言以蔽之。