伴随移动设备和流式数据的爆发式增长,开发者构建多种并发数据流水线来应对海量和异构以及实时数据的挑战,其中最流行的是Google的MapReduce,MapReduce一直是服务器集群上做并行分布式计算的一个非常受欢迎的基础架构和编程模型。然而MapReduce在流水线构建和维护方面成本都比较高,日渐成为困扰全世界开发者的问题。在今年的年度开发者大会上,Google发布了其云计算方面的一系列全新尝试, Cloud Dataflow就是其主推的一种技术。Cloud Dataflow是一种构建、管理和优化复杂数据流水线的方法,用于构建移动应用,调试、追踪和监控产品级云应用。它采用了Google内部的技术Flume和MillWhell,其中Flume用于数据的高效并行化处理,而MillWhell则用于互联网级别的带有很好容错机制的流处理。 Google云平台的产品营销总监Brian Goldfarb说:“Cloud Dataflow可以用于处理批量数据和流数据两种。在一个世界性事件(比如演讲当中的世界杯事件)中,实时分析上百万twitter数据。在流水线的一个部阶段责读取tweet,下一个阶段负责抽取标签。另一个阶段对tweet分类(基于情感,正面负面或者其他方面)。下一个阶段过滤关键词等等。相比之下,Map/Reduce这个用来处理大数据的较早模型,处理这种实时数据已经力不从心,而且也很难应用到这种很长很复杂的数据流水线上。” Google的新平台Cloud Dataflow针对批量数据和流数据提供了统一的API,对于简单和复杂的流水线,也是一样的。有了Cloud Dataflow,开发者能够更加聚焦于数据逻辑本身,而将之前复杂的流水线优化留给Google云,也无需关注部署、维护和扩展其应用架构。Cloud Dataflow可用于ETL、批量数据处理、流数据分析等等,它可以自动地优化部署开发者代码所需要的资源。相比起独立关注数据流水线的每个阶段,Cloud Dataflow考虑了这些阶段之间的交互。为了处理好阶段之间传输的数据流,Cloud Dataflow利用key、滑动窗口、Map/Reduce部分技术以及其他技术来聚合数据。 在Cloud Dataflow的帮助下,Google云平台对任何应用都能给出业界最好的优化方式,开发者在大多数情况下都可以直接使用这些优化,在极端情况还可以使用自己定制的代码进行替换。Cloud Dataflow简单易用,对于开发者来说,大部分情况下,他们都是在跟API的简单部分打交道。下面是一段来自大会主题演讲的代码示例: Pipeline pipeline = Pipeline.create();PCollection tweets = pipeline.begin().apply(new InputFromPubSub()).apply(new TweetTransformer());tweets.apply(new CalculateSentiment());tweets.apply(new CorrelateKeywords());pipeline.run(); (当前的API还只有Java版本) 开发者定义流水线,确保每个部分(TweetTransformer,CalculateSentiment等等)的代码的效率和正确性。Google云就会开始执行工作流。Google云还会注意底层的虚拟机细节。诸如部署、扩展、加减速等都会在后台完成。 为了配合Cloud Dataflow,Google还为开发者提供了一些新工具,来帮助他们更容易和高效的工作。工具包括云保存、云调试、云追踪以及云监控。
|