论文摘抄 - FlumeJava

本摘抄不保证论文完整性和理解准确性 

原始的MapReduce,分Map,Shuffle,Reduce。Map里包括shards。Shuffle理解为groupByKey的事情。Reduce里包括Combiner,可以定义Sharder来控制key怎么和Reducer worker对应起来。

核心抽象和基本原语

PCollection<T>是一个不可变的bag,可以是有序的(Sequence),也可以是无序的(Collection)。PCollection可以来自于内存里的Java PCollection对象,也可以读取自文件。

PTable<K, V>,可以看成PCollection<Pair<K, V>>,不可变无序multi-map。

第一个原语是parallelDo(),把PCollection<T>变成新的PCollection<S>,处理方式定义在DoFn<T, S>里。emitFn是call-back,传给用户的process(…),使用emitFn.emit(outElem)发射出去。parallelDo()可以在map或reduce中使用,DoFn不应该使用闭包外全局的变量,(inline function)纯操作自己的inputs。

第二个原语是groupByKey(),把PTable<K, V>转变成PTable<K,Collection<V>>,

第三个原语是combineValues(),接收input为PTable<K,Collection<V>>和一个V的符合结合律的方法,返回PTable<K, V>。

第四个原语是flatten(),接收一个PCollection<T>的list,返回一个PCollection<T>

衍生原语(Derived Operations)

count(),接收PCollection<T>,返回PTable<T, Integer>

实现方式为parallelDo(),groupByKey()和combineValues()

join(),接收PTable<K, V1>,PTable<K, V2>,返回PTable<K,Tuple2<Collection<V1>, Collection<V2>>

实现方式为,第一步,使用parallelDo()把每个input PTable<K, Vi>变成通用的PTable<K, TaggedUnion2<V1,V2>>;第二步使用flattern来combine tables;第三步,使用groupByKey()作用于被扁平过了tables,产生PTable<K,Collection<TaggedUnion2<V1, V2>>>

top(),接收比较函数和N,

实现方式为parallelDo(),groupByKey()和combineValues()

延迟分析(Deffered Evaluation)

PCollection对象有两种状态,defferred或materialized。

FlumeJava.run()真正触发execution plan的物化/执行。

PObjects

PObject<T>用于存储Java对象,物化过了之后可以使用getValue()方法获得PObject的值。有点像Future。

operate()方法

优化器

parallelDoFusion(融合)

Producer-Consumer and Sibling Fusion,如下图

大致是说,ABCD这几种由同一份input产生的parallelDo,可以融合起来在一个parallelDo,即A+B+C+D,里处理。一些中间结果也可以不要。

MapShuffleCombineReduce(MSCR) Operation

FlumeJava优化器的核心在于把ParallelDo,GroupByKey,CombineValues和Flattern的组合转换成一个个单个的MapReduce。

MSCR是一个中间层的操作,有M个input channels(每个可以进行map操作),有R个Reduce channels(每个可以进行shuffle,或combine,或reduce操作)。单个input channal m,接收PCollection<Tm>作为输入,执行R路output输出的ParallelDo “map”操作,产生R个PTable<Kr, Vs> outputs。每个output channel r flatterns它的M个inputs,然后

a)  进行一次GroupByKey的“shuffle”,或CombineValues的“combine”,或Or-output的ParallelDo “reduce”,然后把结果写出到Or-output PCollections

b)  把inputs直接写出为outputs

前者这样的output channel称为”Grouping” channel,后者称为”pass-through” channel。”pass-through” channel允许map的output成为一个MSCR操作的输出。

每个MSCR操作可以用一个MapReduce完成。它让MapReduce更加通用,体现在:

?  允许多个reducers和combiners;

?  允许每个reducer产生多个outputs;

?  消除了每个reducer必须以相同的key为input来产出output的约束;

?  允许pass-through形式的outputs。

所以MSCR是优化器里很好的一个中间操作目标。

MSCR Fusion

MSCR操作产生于一些相关的GroupByKey操作集合,相关的GroupByKey操作是指产生于相同的input(如Flattern操作),或被同一个parallelDo操作制造出来的input。

这部分比较晦涩难懂啊,但是是理解核心

全局优化策略

优化要达到的效果是最后的执行计划里包含尽可能少的又高效的MSCR操作。

1.  Sink Flatterns。把扁平操作下沉,如h(f(a)+f(b))=> h(f(a))+h(f(b)),即分配律,然后又能和parallelDo的融合特性结合起来,如(hof)(a)+(hog)(b)

2.  Lift CombineValues。如果CombineValues紧跟着GroupByKey操作。

3.  Insert fusion blocks。如果俩GroupByKey操作是由生产者-消费者的ParallelDo chain连起来的,ParallelDo要在GroupByKey里做上调和下移。

4.  Fuse ParallelDos。

5.  Fuse MSCRs。

针对这几个策略的实施,后面举了个例子并且描绘了具体的执行图,非常帮助理解

优化的不足和未来工作

优化器没有分析用户写的方法,比如估算input和output数据量大小。

也没有修改用户的代码来做优化。

需要做一些分析避免运算的重复,及去除不必要或不合理的groupByKey。

Executor

优化完了之后是执行。目前支持的是batch的模式提交作业。

在执行方面,FlumeJava会做方便用户开发、debug,自动创建删除文件,自动识别数据量大小调整执行并行度和改变执行模式(remote)等等事情。

全文完 :)

论文摘抄 - FlumeJava

时间: 2024-10-13 20:23:08

论文摘抄 - FlumeJava的相关文章

论文摘抄 - Infobright

背景 论文 Brighthouse: AnAnalytic Data Warehouse for Ad-hoc Queries,VLDB 2008 brighthouse是一个面向列的数据仓库,在列存储和压缩数据方面,数据压缩比达到10:1.其核心Knowledge Grid(知识网格)层,即一个能自动调节.所存出具特别小的元数据层,替代了索引的功能,提供了数据过滤.统计信息表达.实际数据位置信息等内容,让brighthouse可以作为一个分析型的数据仓库,,达到ad-hoc查询的速度.Know

论文摘抄 - Tenzing

本摘抄不保证论文完整性和理解准确性 背景 异构数据的适配及数据可扩展性,资源可扩展性,廉价机器,SQL查询. 架构概述 Worker pool,query server,clientinterfaces,metadata server Worker线程是long-running的,worker pool包括master节点和worker节点,以及一个master watcher. Query server把query解析,优化之后传给master执行,优化包括一些基本的规则优化和基于成本的优化.

论文写作经验 集萃

IEEE ICIP: International conference on Image Processing 图像处理领域最具影响力国际会议,一年一次 图像处理 IEEE ICASSP: International Conference on Acoustics, Speech and Signal Processing 是语音和声学信号处理领域最权威的国际学术会议之一,也是图像.视频信号处理领域的权威会议之一,每年举办一次 信号处理 英文投稿的一点经验[转载] From: http://ch

本文摘录 - FlumeJava

本文节选不保证论文的完整性和理解的准确性  原始的MapReduce.分Map,Shuffle,Reduce. Map里包含shards. Shuffle理解为groupByKey的事情.Reduce里包含Combiner,能够定义Sharder来控制key怎么和Reducer worker相应起来. 核心抽象和基本原语 PCollection<T>是一个不可变的bag.能够是有序的(Sequence),也能够是无序的(Collection).PCollection能够来自于内存里的Java

论文作假升级抄得“不露痕迹” 大学生诚信问题堪忧

近日,复旦大学一学生举报院士导师造假事件引发关注.有网友吐槽:连导师发表的文章都涉嫌抄袭,难怪如今的大学生毕业论文都肆无忌惮的到处"借鉴",拼拼凑凑成毫无研究价值的文章.  记者尝试在淘宝网上搜索"论文代写"."抄袭改写"等关键字发现,有四千多条关于此类信息的卖家发布商品并表示论文"包过"."包满意".从多个卖家处了解到,论文代写的价格在70元每一千字,一般的本科毕业论文大约需要一千多元,而自己"

[Berkeley]弹性分布式数据集RDD的介绍(RDD: A Fault-Tolerant Abstraction for In-Memory Cluster Computing 论文翻译)

摘要: 本文提出了分布式内存抽象的概念--弹性分布式数据集(RDD,Resilient Distributed Datasets).它同意开发者在大型集群上运行基于内存的计算.RDD适用于两种应用,而现有的数据流系统对这两种应用的处理并不高效:一是迭代式算法,这在图应用和机器学习领域非经常见.二是交互式数据挖掘工具.这两种情况下.将数据保存在内存中可以极大地提高性能.为了有效地实现容错,RDD提供了一种高度受限的共享内存,即RDD在共享状态的时候是基于粗粒度的转换而不是细粒度的更新(换句话说就是

Apache Spark RDD(Resilient Distributed Datasets)论文

Spark RDD(Resilient Distributed Datasets)论文 概要 1: 介绍 2: Resilient Distributed Datasets(RDDs) 2.1 RDD 抽象 2.2 Spark 编程接口 2.2.1 例子 – 监控日志数据挖掘 2.3 RDD 模型的优势 2.4 不适合用 RDDs 的应用 3 Spark 编程接口 3.1 Spark 中 RDD 的操作 3.2 举例应用 3.2.1 线性回归 3.2.2 PageRank 4 表达 RDDs 5

2星|《基于旅游攻略的城市内部游客流动研究》:经济地理学博士论文,结论貌似是常识

基本是一本经济地理学的博士论文.用看起来比较专业的数学公式分析南京的游客旅游数据,一大部分基础数据是去哪儿网的攻略.专业水平如何我不清楚,得出的结论我感觉基本是常识. 我评2星,主要的理由是这个:全书的介绍(包括在亚马逊网站上的介绍.书的扉页上的介绍)都比较含糊,不提是一本学术书,否则我也不买了. 另外,全书没介绍作者身份,这一点非常不专业.其他方面看起来是比较严谨的学术论文的风格.有公式.图表.数据.分析.结论. 以下是书中依据数据与公式分析出来的结论的摘抄: 1:通过2006年.2015年两

智能机器人chatbot论文集合

机器不学习 jqbxx.com-专注机器学习,深度学习,自然语言处理,大数据,个性化推荐,搜索算法,知识图谱 今年开始接触chatbot,跟着各种专栏学习了一段时间,也读了一些论文,在这里汇总一下.感觉是存在一些内在的趋势的.只是要找到一个当下切实可行又省时省力的方案好像不太容易. 论文摘要 <Information Extraction over Structured Data: Question Answering with Freebase> 本文利用查询KB替代查询数据库,可以更好的理