分享

大数据最新技术:快速了解分布式计算:Google Dataflow

pig2 发表于 2014-10-11 00:47:16 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 5 33857
本帖最后由 pig2 于 2014-10-11 20:34 编辑
问题导读

1.Dataflow当前的API支持什么语言?
2.相比原生的map-reduce模型,Dataflow哪些优点?
3.Dataflow与Cascading、Spark有什么区别和联系?

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

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


2.不需手工配置和管理MapReduce集群。自动进行代码优化和资源调度,使得开发者的主要精力可以放在业务逻辑本身

dataflow1.png


3.支持从Batch到Streaming模式的无缝切换:
假设我们要根据用户在twitter上产生的内容,来实现一个hashtags自动补全的功能
Example: Auto completing hashtags

Prefix
Suggestions
ar#argentina, #arugularocks, #argylesocks
arg#argentina, #argylesocks, #argonauts
arge#argentina, #argentum, #argentine

pipeline2.png

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

pipeline3.png

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。
这是一个经典的批处理的例子
batch4.png
转化为streaming做法只需改动数据源。如果我们现在希望模型提供的是最新的热词,考虑数据的时效性,只需额外添加一行设置数据window的操作,比如说60min以前的数据我们就不要了
streaming5.png


4.Dashboard:
还可以在developer console中了解流水线中每个环节执行的情况,每个流程框基本对应着一行代码

dashboard6.png

5.生态系统:
BigQuery作为存储系统是Dataflow的一个补充,经过Dataflow清洗和处理过的数据,可以在BigQuery中存下来,同时Dataflow也可以读取BigQuery以进行表连接等操作。如果想在Dataflow上使用一些开源资源(比如说Spark中的机器学习库),也是很方便的

eco7.png


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

比较
Cascading/Twitter Scalding:
1) 传统Map-reduce只能处理单一的流,而Dataflow可以构建整个pipeline,自动优化和调度,Dataflow乍一听感觉非常像Hadoop上的Cascading(Java)/Scalding(Scala)。
2) 它们的编程模型很像,Dataflow也可以很方便做本地测试,可以传一个模拟集合,在上面去迭代计算结果,这一点是传统Map-reduce望尘莫及的。

Twitter Summingbird:
将批处理和流处理无缝连接的思想又听起来很像把Scalding和Strom无缝连接起来的twittersummingbird(Scala).

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处理(Pregel)这块整合进去。




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

已有(5)人评论

跳转到指定楼层
韩克拉玛寒 发表于 2014-10-11 09:13:40
谢谢楼主的分享
回复

使用道具 举报

hb1984 发表于 2014-10-12 12:21:19

谢谢楼主的分享
回复

使用道具 举报

greenclould 发表于 2015-9-4 16:48:42
回复

使用道具 举报

bluebaby2006 发表于 2016-1-13 14:34:52
这才是真正的大牛啊!
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条