十分钟了解分布式计算:Google Dataflow

介绍

Google Cloud Dataflow是一种构建、管理和优化复杂数据处理流水线的方法,集成了许多内部技术,如用于数据高效并行化处理的Flume和具有良好容错机制流处理的MillWheel。Dataflow当前的API还只有Java版本(其实Flume本身是提供Java/C++/Python多种接口的)。

相比原生的map-reduce模型,Dataflow有几个优点:

  1. 可以构建复杂的pipeline,在这不妨引用Google云平台的产品营销总监Brian Goldfarb的话

    Cloud Dataflow可以用于处理批量数据和流数据两种。在一个世界性事件(比如演讲当中的世界杯事件)中,实时分析上百万twitter数据。在流水线的一个部阶段责读取tweet,下一个阶段负责抽取标签。另一个阶段对tweet分类(基于情感,正面负面或者其他方面)。下一个阶段过滤关键词等等。相比之下,Map/Reduce这个用来处理大数据的较早模型,处理这种实时数据已经力不从心,而且也很难应用到这种很长很复杂的数据流水线上。

  2. 不需手工配置和管理MapReduce集群。自动进行代码优化和资源调度,使得开发者的主要精力可以放在业务逻辑本身
  3. 支持从Batch到Streaming模式的无缝切换:
    假设我们要根据用户在twitter上产生的内容,来实现一个hashtags自动补全的功能

    Example: Auto completing hashtags
    Prefix Suggestions
    ar #argentina, #arugularocks, #argylesocks
    arg #argentina, #argylesocks, #argonauts
    arge #argentina, #argentum, #argentine


    代码几乎和数据流一一对应,和单机程序的编写方式差别不大

    Dataflow将数据抽象为一个PCollections (“parallel collections”),PCollection可以是一个内存中的集合,从Cloud Storage读进来,从BigQuerytable中查询得到,从Pub/Sub以流的方式读入,或者从用户代码中计算得到。
    为了对PCollection进行处理,Dataflow提供了许多PTransforms (“parallel transforms”),例如ParDo (“parallel do”) 对于PCollection中每一个元素分别进行指定操作(类似MapReduce中的Map和Reduce函数,或者SQL中的WHERE),GroupByKey对一个key-value pairs的PCollection进行处理,将相同key的pairs group到一起(类似MapReduce中的Shuffle步骤,或者SQL中的GROUP BY和JOIN)。
    此外,用户还可以将这些基本操作组合起来定义新的transformations。Dataflow本身也提供了一些常用的组合transformations,如Count, Top, and Mean。
    这是一个经典的批处理的例子

    转化为streaming做法只需改动数据源。如果我们现在希望模型提供的是最新的热词,考虑数据的时效性,只需额外添加一行设置数据window的操作,比如说60min以前的数据我们就不要了

  4. Dashboard:
    还可以在developer console中了解流水线中每个环节执行的情况,每个流程框基本对应着一行代码
  5. 生态系统:
    BigQuery作为存储系统是Dataflow的一个补充,经过Dataflow清洗和处理过的数据,可以在BigQuery中存下来,同时Dataflow也可以读取BigQuery以进行表连接等操作。如果想在Dataflow上使用一些开源资源(比如说Spark中的机器学习库),也是很方便的

为了配合Dataflow,Google Cloud Platform还为开发者提供了一系列工具,包括云保存,云调试,云追踪和云监控。

比较

  1. Cascading/Twitter Scalding
    1) 传统Map-reduce只能处理单一的流,而Dataflow可以构建整个pipeline,自动优化和调度,Dataflow乍一听感觉非常像Hadoop上的Cascading(Java)/Scalding(Scala)。
    2) 它们的编程模型很像,Dataflow也可以很方便做本地测试,可以传一个模拟集合,在上面去迭代计算结果,这一点是传统Map-reduce望尘莫及的。
  2. Twitter Summingbird
    而将批处理和流处理无缝连接的思想又听起来很像把Scalding和Strom无缝连接起来的twitter summingbird(Scala).
  3. Spark
    1) Spark也有可以构建复杂的pipeline做一代码优化和任务调度的好处,但目前还需要程序员来配置资源分配。
    2) Spark在设计分布式数据集API时,模拟了Scala集合的操作API,使得额外的语法学习成本比Dataflow要低。
    3) 不过Dataflow似乎并没有提内存计算的事儿,而这一点可以说是Spark最本质的特征。不过它支持将Spark作为Open Source工具,连入Cloud框架作为补充。
    4) 分布式计算中除了Batch和Streaming,Graph也是一个重要的问题,Spark在这方面有GraphX,Dataflow在未来也会将处理Graph处理这块整合进去。

参考

本文的内容主要基于官方资料

Sneak peek: Google Cloud Dataflow, a Cloud-native data processing service

Google I/O 2014 - The dawn of "Fast Data"(国内用户下载)

链接

Google Cloud Dataflow 简单理解

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

Google Announces Cloud Dataflow Beta at Google I/O

Google Launches Cloud Dataflow, A Managed Data Processing Service

Mapreduce successor google cloud dataflow is a game changer for hadoop thunder

论文

FlumeJava: Easy, Efficient Data-Parallel Pipelines,PLDI,2010

MillWheel: Fault-Tolerant Stream Processing at Internet Scale,Very Large Data Bases (2013), pp. 734-746

转载请注明出处:
十分钟了解分布式计算:Google Dataflow

十分钟了解分布式计算:Google Dataflow,布布扣,bubuko.com

时间: 2024-08-24 14:41:01

十分钟了解分布式计算:Google Dataflow的相关文章

十分钟了解分布式计算:Petuum

Petuum是一个分布式机器学习专用计算框架,本文介绍其架构,并基于文章 More Effective Distributed ML via a Stale Synchronous Parallel Parameter Server,NIPS 2013 重点探讨其核心内容SSP协议. 主要思想 Parameter server提供了一个易于读写Global模型参数的接口,而SSP协议允许distributed workers读写本地缓存中stale版本的参数(而不是每次都花大量时间时间等待cen

十分钟了解分布式计算:Spark

Spark是一个通用的分布式内存计算框架,本文主要研讨Spark的核心数据结构RDD,及其在内存上的容错,内容基于论文 Zaharia, Matei, et al. "Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing" Proceedings of the 9th USENIX conference on Networked Systems Desig

十分钟了解分布式计算:GraphX

GraphX是Spark中用于图(e.g., Web-Graphs and Social Networks)和图并行计算(e.g., PageRank and Collaborative Filtering)的API,可以认为是GraphLab(C++)和Pregel(C++)在Spark(Scala)上的重写及优化,跟其他分布式图计算框架相比,GraphX最大的贡献是,在Spark之上提供一栈式数据解决方案,可以方便且高效地完成图计算的一整套流水作业. GraphX最先是伯克利AMPLAB的一

十分钟了解分布式计算:GraphLab

GraphLab是一个面向大规模机器学习/图计算的分布式内存计算框架,由CMU在2009年开始做,这里的内容是基于论文 Low, Yucheng, et al. "Distributed GraphLab: A Framework for Machine Learning in the Cloud" Proceedings of the VLDB Endowment 5.8 (2012)[ppt] 后续会介绍GraphLab加强版PowerGraph (v. 2.2)的内容 Graph

流编辑器 SED 十分钟入门全教程

这里借用一下酷壳网sed博文的图来开题,超赞的-- 1. sed 简介及原理简析 1.1 sed 简介 Sed 是什么?相信很多人都有所了解,sed 全称StreamEDitor 即流编辑器.生于1973年or 1974年by 贝尔实验室的 Lee E. McMahon(已故),是基于交互式编辑器ed("editor", 1971)的脚本功能及更早的qed(quick editor ,1965-1966)(Sed 比 awk 要大那么几岁,所以客官莫急,过几天我们再来详解 awk).S

花十分钟,让你变成AI产品经理

花十分钟,让你变成AI产品经理 https://www.jianshu.com/p/eba6a1ca98a4 先说一下你阅读本文可以得到什么.你能得到AI的理论知识框架:你能学习到如何成为一个AI产品经理并且了解到AI产品经理如何在工作中发挥作用,以及AI产品经理需要从哪些方面锻炼能力.最重要的是,通过本文,一切都特别快(手打滑稽). PS:目前只针对弱人工智能(我喜欢简称,此处我们简称为"弱智")进行学习. 首先我们必须要掌握的是AI的专业知识框架,然后了解AI的市场情况,最后要明白

【时序数据库】十分钟系列

参考文档: 十分钟看懂时序数据库(I)-存储 十分钟看懂时序数据库(II)- 预处理 十分钟看懂时序数据库(III)- 压缩 十分钟看懂时序数据库(IV)- 分级存储 十分钟看懂时序数据库(V)- 分布式计算 原文地址:https://www.cnblogs.com/badboy200800/p/10986467.html

Orange's 自己动手写操作系统 第一章 十分钟完成的操作系统 U盘启动 全记录

材料: 1 nasm:编译汇编源代码,网上很多地方有下 2  WinHex:作为windows系统中的写U盘工具,需要是正版(full version)才有写的权限,推荐:http://down.liangchan.net/WinHex_16.7.rar 步骤: 1 编译得到引导程序的机器代码.用命令行编译汇编源代码:name boot.asm -o boot.bin,其中boot.bin文件产生在命令行的当前目录中. 2 将引导程序写入到U盘引导盘的第一个扇区的第一个字节处(后),即主引导区.

[转]教你十分钟下载并破解IntelliJ IDEA(2017)

来源:http://www.itwendao.com/article/detail/400687.html 之前都是用myeclipse,但是最近发现看的很多教学视频都是使用 IntelliJ IDEA,于是决定换个软件开始新的学习征程! 下面讲讲我是如何在十分钟之内安装并破解该软件. 1.首先,我找到了 IntelliJ IDEA的官网:www.jetbrains.com 然后找到下载的地方,选择自己电脑所匹配的下载安装包,这里我们选择收费版的下载,因为免费版的功能并没有收费版的强悍. 2.接