分享

云计算时代的新计算模式Cloud Dataflow流式处理介绍

pig2 发表于 2014-10-11 21:16:42 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 1 16371
问题导读
1.本文Cloud Dataflow的定义是什么?
2.你对Cloud Dataflow的理解是什么?
3.Cloud Dataflow是否可以用于批处理?
4.Cloud Dataflow有哪些应用?






伴随移动设备和流式数据的爆发式增长,开发者构建多种并发数据流水线来应对海量和异构以及实时数据的挑战,其中最流行的是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的简单部分打交道。下面是一段来自大会主题演讲的代码示例:
  1. Pipeline pipeline = Pipeline.create();
  2. PCollection tweets = pipeline.begin()
  3. .apply(new InputFromPubSub())
  4. .apply(new TweetTransformer());
  5. tweets.apply(new CalculateSentiment());
  6. tweets.apply(new CorrelateKeywords());
  7. pipeline.run();
复制代码


(当前的API还只有Java版本)

开发者定义流水线,确保每个部分(TweetTransformer,CalculateSentiment等等)的代码的效率和正确性。Google云就会开始执行工作流。Google云还会注意底层的虚拟机细节。诸如部署、扩展、加减速等都会在后台完成。

为了配合Cloud Dataflow,Google还为开发者提供了一些新工具,来帮助他们更容易和高效的工作。工具包括云保存、云调试、云追踪以及云监控。

云保存是一个简单的API,用来保存、获取和同步云中的用户信息。信息可能包括应用数据、偏好以及其他。数据存储在Google的云存储Cloud Datastore中,可以通过现有的数据存储API,在Google的App Engine或者Compute Engine中访问。
  1. GoogleAppClient client = . . .
  2. List infoToSave = . . .
  3. SaveResult saveResult = CloudSaveManager.save(client, infoToSave);
复制代码


云调试,正如名字所表示的意思,它是一个调试接口(以网页的形式呈现),用于调试基于云的应用,为开发者提供了一个全新的现代化的调试方式。
1.jpg

通常来讲,快速定位效率瓶颈是很难的,云追踪,提供了一个非常有用的可视化工具,将调用数据库的夫妇所消耗的时间很好的呈现,使得开发者将其应用的时间消耗分布更好的展现和理解。进一步来讲,开发者还可以比较其应用不同版本的性能。
2.jpg

云监控的设计,旨在帮助开发者找到和修复应用中的异常情况。收购了Stackdriver以后,云监控可以提供各类统计数据、监控界面以及应用报警,可以自定义报警,在用户收到影响之前提醒开发者,还有一系列流行的开源软件如Apache、Nginx、MongoDB、MySQL、Tomcat、IIS等等。比如可以用云监控来发现和调试用户在连接到App Engine时错误频发的情况,或者通过简单的配置来降低Cassandra的检索时间。
3.jpg

本图是Google最近购买的Stackdriver的云监控画面
Cloud Dataflow以及附属工具现在还是Beta版本。公开发行时间尚未确认。可以相信的是,有了这样的强大工具,开发者能够快速自动扩展、缓存其应用。例如Snapchat或者Rising Star这样的应用已经在Google云平台上运行。






已有(1)人评论

跳转到指定楼层
hb1984 发表于 2014-10-12 12:37:26
谢谢楼主分享。               
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条