写点什么

Cloud Dataflow :云计算时代的新计算模式

  • 2014-07-05
  • 本文字数:2223 字

    阅读完需:约 7 分钟

伴随移动设备和流式数据的爆发式增长,开发者构建多种并发数据流水线来应对海量和异构以及实时数据的挑战,其中最流行的是 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 还为开发者提供了一些新工具,来帮助他们更容易和高效的工作。工具包括云保存、云调试、云追踪以及云监控。

  • 云保存是一个简单的 API,用来保存、获取和同步云中的用户信息。信息可能包括应用数据、偏好以及其他。数据存储在 Google 的云存储 Cloud Datastore 中,可以通过现有的数据存储 API,在 Google 的 App Engine 或者 Compute Engine 中访问。 ```

    GoogleAppClient client = . . .
    List infoToSave = . . .
    SaveResult saveResult = CloudSaveManager.save(client, infoToSave);

复制代码
- 云调试,正如名字所表示的意思,它是一个调试接口(以网页的形式呈现),用于调试基于云的应用,为开发者提供了一个全新的现代化的调试方式。 ![](https://static001.infoq.cn/resource/image/58/7e/58ba350856b03380bc064818cc7f217e.jpg)
- 通常来讲,快速定位效率瓶颈是很难的,云追踪,提供了一个非常有用的可视化工具,将调用数据库的夫妇所消耗的时间很好的呈现,使得开发者将其应用的时间消耗分布更好的展现和理解。进一步来讲,开发者还可以比较其应用不同版本的性能。 ![](https://static001.infoq.cn/resource/image/75/88/75976a22a0bd7fe613371f2902868a88.jpg)
- 云监控的设计,旨在帮助开发者找到和修复应用中的异常情况。收购了 Stackdriver 以后,云监控可以提供各类统计数据、监控界面以及应用报警,可以自定义报警,在用户收到影响之前提醒开发者,还有一系列流行的开源软件如 Apache、Nginx、MongoDB、MySQL、Tomcat、IIS 等等。比如可以用云监控来发现和调试用户在连接到 App Engine 时错误频发的情况,或者通过简单的配置来降低 Cassandra 的检索时间。 ![](https://static001.infoq.cn/resource/image/cb/f7/cbbd0b4d6754f73241f8b70ed11321f7.jpg)
本图是 Google 最近购买的 Stackdriver 的云监控画面
Cloud Dataflow 以及附属工具现在还是 Beta 版本。公开发行时间尚未确认。可以相信的是,有了这样的强大工具,开发者能够快速自动扩展、缓存其应用。例如 Snapchat 或者 Rising Star 这样的应用已经在 Google 云平台上运行。
- - - - - -
感谢 [郭蕾](http://www.infoq.com/cn/author/%E9%83%AD%E8%95%BE) 对本文的审校。
给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 [editors@cn.infoq.com](mailto:editors@cn.infoq.com)。也欢迎大家通过新浪微博([@InfoQ](http://www.weibo.com/infoqchina))或者腾讯微博([@InfoQ](http://t.qq.com/infoqchina))关注我们,并与我们的编辑和其他读者朋友交流。
2014-07-05 00:276690
用户头像

发布了 268 篇内容, 共 113.6 次阅读, 收获喜欢 23 次。

关注

评论

发布
暂无评论
发现更多内容

Java开发必备 Git 分支开发:规范指南及完全学会Git的24堂课笔记

Java 程序员 后端

Java架构师面试问些什么?微服务之springcloud面试题(共22题

Java 程序员 后端

java程序员的AI之路-大数据篇 hadoop安装(1)

Java 程序员 后端

Flink 实践教程:入门(1):零基础用户实现简单 Flink 任务

腾讯云大数据

flink 流计算 Oceanus

文本行随机打乱工具

入门小站

工具

架构实战营第1期-毕业设计项目

Anyou Liu

「架构实战营」

Java注解-一文就懂,java程序设计与实践教程王薇

Java 程序员 后端

Java知识体系总结(2021版),JDK、JRE与JVM的区别与联系

Java 程序员 后端

Java程序员极力推荐的springboot全家桶干货系列

Java 程序员 后端

Java程序员的工资为什么那么高,首先要先掌握这999页阿里P8笔记!

Java 程序员 后端

Flink 实践教程:入门(3):读取 MySQL 数据

腾讯云大数据

flink 流计算 Oceanus

033云原生之云服务测评指标体系

穿过生命散发芬芳

云原生 10月月更

Java常量池理解与总结,java线程池回收原理

Java 程序员 后端

Java并发之Condition详解,springframework教程

Java 程序员 后端

Java程序员经典面试题集大全(一),分享面试经历的网站

Java 程序员 后端

Java程序员裸辞两个月,面试阿里、美团,值得一读

Java 程序员 后端

java并发之Condition图解与原理剖析,推荐

Java 程序员 后端

Java死锁的原因例子及解决方法,三年Java开发

Java 程序员 后端

java程序员的AI之路-大数据篇 hadoop安装,java基础知识点梳理

Java 程序员 后端

Flink 实践教程:入门(2):写入 Elasticsearch

腾讯云大数据

flink 流计算 Oceanus

Java开发工作4年还是只会“增删改查”,java技术栈太广

Java 程序员 后端

Java异常架构与异常关键字,海康威视java开发面经

Java 程序员 后端

Java是未来的第一编程语言吗?,3分钟告诉你为什么要用Java开发高频交易系统

Java 程序员 后端

Java架构师面试之Netty面试专题及答案(共10题,含详细解答

Java 程序员 后端

Java程序员必须熟记的微服务面试题(含答案)

Java 程序员 后端

Java注解,java架构师课程哪家好

Java 程序员 后端

Java版流媒体编解码和图像处理(JavaCPP+FFmpeg)

Java 程序员 后端

Java并发关键字-final,java实战视频

Java 程序员 后端

Java日常开发的21个坑,你踩过几个?,java基础程序代码编写

Java 程序员 后端

Java架构师职位常见面试题,看完面试不再慌!

Java 程序员 后端

Java的wait和notify学习三部曲之一:JVM源码分析

Java 程序员 后端

Cloud Dataflow :云计算时代的新计算模式_云计算_张天雷_InfoQ精选文章