亚马逊最近发布了一项新 AWS 服务,把大数据流带入到了类似 SaaS 的世界里,你向输入流执行一个 SQL 查询就可以获得输出数据了,不必再花时间写代码或者搭建底层基础设施。
对于那些在存储和计算方面非常看重工程上的快速部署和无限扩展的公司,云就是他们的最终归宿。基于 Hadoop 提供大数据 PaaS 已经发布很久了,Azure 提供的是 HDInsight ,AWS 提供的是 Amazon Elastic MapReduce ,但现在更加重磅的实时流处理的产品终于出场了。在 Azure 云上做事件流处理主要用的是一种非常简单、类似 SaaS 的方法,现在 AWS 终于也提供了类似产品。
Amazon Kinesis Analytics 现在已经发布了,是微软在 2015 年发布的 Azure Stream Analytics 的直接竞争产品。两种服务都是用相同方法实现流分析功能的:挂接到数据源,再指定目的端,然后不断地运行查询命令来生成输出结果。分析就是通过查询命令做的,两个产品都用 SQL(或非常类似 SQL 的语言),这就非常容易实现具体的分析了。
在云这个行业有个非常有趣的趋势:平台提供商都在努力把自身的经验和优势应用到云上分析中,努力通过抽象让最终用户非常容易使用自己的产品。现在的 AWS Kinesis 产品就是亚马逊用来为 AWS 用户们提供细粒度指标的。在项目启动时担任数据服务部总经理的Ryan Waite 说:“这让我们测量服务的处理能力上了新台阶,可以实时发出预警了”。它成功地将重心从“你可以在我们这里做这件事”转变成了“我们可以帮你作这件事”。AWS 首席宣传官 Jeff Barr 在他的宣传 Amazon Kinesis Analytics 的博客中主要强调了容易使用这个方面:
你可以关注处理数据并从中提取业务价值,再也不必浪费时间部署基础设施了。不超过 5 分钟,只需要写一点点复杂度绝对不超过 SQL 查询的东西,你就可以构建起一套强大、端到端的流处理管道了。
Kinesis Analytics 使用的是管道模型,分析程序连上数据源,不断地运行某个查询命令,再把结果输出到某个目标端。源可以是 Kinesis Stream 或者 Kinesis Firehose ,这样你就可以把数据从很多个事件生产者那里汇集起来,交给某个查询。SQL 查询可以简单到查看有多少生产者在发送数据的 SELECT DISTINCT 操作,也可以复杂到做类似滑动窗口的分析。目标端也可以是 Kinesis Stream 或 Firehose,这样你就可以把累积数据存入一个关系型数据库,或者把原始数据存入 Hadoop。
要达到与 IaaS 甚至 PaaS 相同的效果,就需要有类似 Kafka 的分布式输入队列,有类似 Apache Storm 或 Spark Streaming 的流处理引擎,以及像 Elasticsearch 一样的分布式目标端。这些都是需要大量管理工作的分布式集群,而分析则是你要自己写代码、测试和部署的定制化解决方案部分。Kinesis Analytics内部是SQLStream,所以AWS 是在用ANSI 标准SQL 提供一个可管理的流分析解决方案。
Azure 也是类似的,与 AWS 对应的流分析服务最近发布了一个 PowerBI(微软的数据可视化工具)的输出连接器。Azure Stream Analytics 研发部经理 Ryan CrawCour 把这种端到端的分析解决方案与用户自己定制的方案作了一个对比:
在以前如果你想构建一套系统,对自己的数据按自身需求进行分析并且将结果展示出来,首先要做数据清洗,再保存到某个数据库中,然后再自己写好程序去不断地查询分析数据,最终再展示到自己写的展示界面上。
不管数据中心还是云,现在在大数据开发领域最受关注的就是实时分析和事件流了。今年 Spark 2.0 的发布为流式数据源增加了 DataFrame 支持。 Apache NiFi (一个支持流的大数据处理和路由工具)已经发布了 1.0 版。Hortonworks 也发布了新版本 DataFlow 1.2 ,这个是基于 NiFi 并专注于流处理的。
在大数据处理领域 Lambda 架构一直都是通用做法:把所有数据都做持久化存储用于批量处理,再把关键数据抽取出来做实时可视化展示。与批处理相比,实时处理一直都缺乏比较好的通用的管理手段。有了 Kinesis Analytics 之后,大家在寻找基于云的解决方案时就有了新选择。
查看英文原文: Amazon Kinesis Analytics is Like SaaS for Big Data Analysis
评论