迭代式mapreduce

董的博客:《迭代式mapreduce框架介绍》网址:

小e的分享:《迭代式MapReduce解决方案》:http://www.wikieno.com/2012/02/iterative-mapred-summary-haloop/

1.概述

  对于传统的MapReduce框架,每个map task读取一个block,结果会写回到本地磁盘。每个reduce task会从map task所在节点读取数据,最终结果写到HDFS。这个过程虽然会降低性能,但提高了可靠性。

  传统MapReduce不支持显示迭代,所以又许多改进型MapReduce,用于支持迭代开发。如Twister, Haloop. 更多迭代式作业以及在Hadoop上的实现方法,请参见Apache开源项目Mahout 以及它的论坛

2.迭代式作业

 

在数据挖掘,信息检索等领域,有很多算法需要多次迭代,本节介绍两个常见的作业,一个是PageRank,另一个是SSSP(Single Source Shortest Path)。PageRank是一个非常有名的网页重要性衡量因素,它是一个多次迭代的过程,如下图所示,每次迭代,PageRank由两个作业MR1和MR2完成,这样迭代多次,直到相邻的两次迭代中PR之差小于某一个阈值。

单源最短路径问题实际上也是多次迭代的过程,主要思想是:设G=(V,E)是一个带权有向图,R是G的邻接矩阵。整个算法始终把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,在每次迭代中求得一条最短路径 , 并将该路径的另一顶点加入到集合S中,直到全部顶点都加入到S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用U表示)。在每次迭代中,从U中选择一个当前路径最短的顶点,转存到S中,直到U为空。

 

3、 技术难点

从PageRank和SSSP的整个计算过程可以看出:

(1) 输入数据都动态数据和静态数据两部分组成。对于PageRank, L属于静态数据,而R属于动态数据;对于SSSP,R属于静态数据,S和U属于动态数据。传输动态数据是不可避免的,而静态数据可以采用某种策略避免重复传输。怎样避免传输静态数据?

(2) 每次迭代,如果所有task重复重新创建,代价将非常高。怎样重用task以提高效率(task pool)?

(3) 每次迭代,数据怎么样存储?如果总是写磁盘,代价将非常高。

(4) 何时迭代终止,怎样改变编程模型,允许用户指定合适终止迭代.

 

4.迭代式MapReduce框架

Haloop是在Hadoop基础上扩展而来的,其架构如下:

Haloop进行的改进有:

(1) 提供了一套新的编程接口,以方便用户进行迭代式程序开发。

(2) master node(jobtracker)包含一个循环控制模块,它不断的启动map-reduce计算知道满足迭代终止条件。

(3) 设计了新的Task scheduler,以便更好的利用data locality特性。

(4) 数据在各个task tracker会被缓存(cache)和建索引(index)。

下面介绍技术创新点:

(1) Hadoop 将所有迭代式任务抽象为:,其中R0是初始输入,L是每次迭代不变的数据,Ri是第i次迭代产生的结果。主要编程接口是:

SetFixedPointThreshold:设置两次迭代的终止条件,即距离差是否达到某一个阈值

setMaxNumOfIterations:设置迭代次数

setIterationInput:设置变化的输入数据

AddInvariantTable:设置不变的输入数据

(2) Loop-aware 任务调度。Haloop在第一次迭代时会将不变的输入数据保存到该计算节点上,以后每次调度task,尽量放在固定的那些节点上(locality)。这样,每次迭代,不变的数据就不必重复传输了。

(3) Cache和Index。Map task的输入与输出,Reduce task的输出都会被建索引和缓存,以加快数据处理速度。其中,缓存是指数据被写到本次磁盘,以供下一轮循环迭代时直接使用。

总体上说,Haloop比Twister抽象度更高,支持更多的计算,同时,由于是在Hadoop基础上修改上,因而继承了Hadoop的很多优点。

 

5、 总结

目前在迭代式MapReduce研究方面,还处于发展阶段。Twister和Haloop的模型抽象度不够高,支持的计算有限。

 

6、 参考资料

(1) Twister主页:http://www.iterativemapreduce.org/

(2) Twister论文:Twister: A Runtime for Iterative MapReduce

(http://www.iterativemapreduce.org/hpdc-camera-ready-submission.pdf)

(3) Haloop主页:http://code.google.com/p/haloop/

(4) Haloop论文:HaLoop: Efficient Iterative Data Processing on Large Clusters(http://www.ics.uci.edu/~yingyib/papers/HaLoop_camera_ready.pdf

原创文章,转载请注明: 转载自董的博客

本文链接地址: http://dongxicheng.org/mapreduce/iterative-mapreduce-intro/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值