`
jimmee
  • 浏览: 529780 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

mapreduce的一些算法设计,优化等(1)

阅读更多

本系列是根据书籍《Data-Intensive Text Processing with MapReduce.pdf》和工作中的一些mapreduce使用做的笔记:

本篇针对《Data-Intensive Text Processing with MapReduce》第三章:

 

1. local aggregation(局部合并)

 

IN-MAPPER COMBINING,也就是说,在map端进行合并。在hadoop的mapreduce过程中,map端在将中间数据传递到reduce端之前,

会先将数据写到本地磁盘。要知道,相对其他操作来说,读写磁盘和网络的延迟会带来较大的性能损耗。因此,尽可能减少

传递到reduce端的数据是能提高性能的。

 

以word count统计为例,增加local aggregation的伪码如下:

 

class Mapper
	method Initialize
		H <- new AssociativeArray
	method Map(docid a; doc d)
		for all term t in doc d do
			H{t} <- H{t} + 1
	method Close
	for all term t in H do
		Emit(term t; count H{t})
 

 

如果是一个完整的mapper的实现,继承自Mapper类,在setup方法中,初始化数据结构,在最后cleanup中输出结果

 

缺点:(1). 这破坏了函数式编程的特性

      (2). 算法不能假定输入数据的顺序,例如,用户的日志顺序,正常情况下,都是按照时间顺序打印的,但是在分布式系统上,

你不能假定你获得的输入顺序也是这样的(这个是个通用的原理,例如在写hive的udf或者udaf统计相关数据时,若要记录状态时,

也要记住这一点);

      (3). in-mapper combining需要内存足够大,能够容纳一个map任务的所有数据;其实一旦遇到内存问题后,也存在通用的解决

方案,可以使用block或者计数器的方式,block的意思是,使用内存进行统计,超过一个block的大小先将数据flush;计数器的意思

是,放入内存的对象可以设置一个阈值,超过这个值,则执行flush动作。不管是block还是计数器的方式,都要要预估一下。

 

 

2.对(pairs)与带(stripes)

 

以nlp中的词语共现作为例子,例如w12表示词语w1和词语w2共同出现测次数。共现矩阵的空间是O(n^2),其中n是单词的数量,从给定的文档

中统计结果

 

(1)使用pairs算法,伪码:

 

class Mapper
	method Map(docid a; doc d)
		for all term w in doc d do
			for all term u in Neighbors(w) do
				Emit(pair (w; u); count 1) // 输出每次共现的结果
class Reducer
	method Reduce(pair p; counts [c1; c2; : : :])
		s<-0
		for all count c in counts [c1; c2; : : :] do
			s <-  s + c // 共现次数累加
		Emit(pair p; count s)
 

 

(2)使用stripes算法

 

class Mapper
	method Map(docid a; doc d)
		for all term w in doc d do
			H <- new AssociativeArray
			for all term u in Neighbors(w) do
				H{u} <-  H{u} + 1 // 计算本文档中共现词的次数
			Emit(Term w; Stripe H)
class Reducer
	method Reduce(term w; stripes [H1;H2;H3; : : :])
		Hf <- new AssociativeArray
		for all stripe H in stripes [H1;H2;H3; : : :] do
			Sum(Hf;H) // 累积每个文档里同一个词对应的共现
		Emit(term w; stripe Hf)
 

 

两个算法对区别在于,使用的key,value不同。简单来说,pair是一个词与另一个词共现就输出一个key-value,但是stripe输出的key-value的key是本词,而value是所有与他共现的词

一些结论:

(1)pair的输出产生更多的中间数据,排序时间也多;

(2)stripe方式的value则是序列化和反序列化需要耗时相对较多,同时value值很大的时候,可能出现oom现象,的那是pair算法则不会有这个问题

(3)两者都可以使用local aggregation的方式优化

 

(4)根据实际测试,stripe算法的性能较好

 

分享到:
评论

相关推荐

    论文研究-基于PML结构文件的MapReduce算法优化.pdf

    运用PML和EPC编码技术保证了数据存储的完整性,采用快速排序和改进XGrind压缩技术对MapReduce算法进行优化。根据实验可知,优化后MapReduce算法减小了64%的I/O吞吐和45%的CPU耗用,同时使查询数据效率提高了75%,可...

    &nbsp;基于MapReduce模型遗传算法的一种改进与实现

    本文给出了在Hadoop中MapReduce并行计算框架下简单遗传算法的并行化处理流程,结合框架处理输入和输出键值对的特点提出了基于最小堆的最优个体保留策略的遗传算法在的设计与实现,进一步优化了算法的收敛速度。...

    大数据算法(一).pdf

    ⼤数据算法设计技术 精确算法设计⽅法 并⾏算法 近似算法 随机算法 在线算法/数据流算法 外存算法 ⾯向新型体系结构的算法(如设计GPU的排序算法) 现代优化算法(遗传算法 蚁群算法等) 算法分析 时间复杂度 IO复杂...

    基于Hadoop MapReduce的矩阵乘法

    1、资源内容:基于Hadoop MapReduce的矩阵乘法 2、代码特点:内含运行结果,不会运行可私信,参数化编程、参数可方便更改、代码编程思路清晰、注释明细,都经过测试运行成功,功能ok的情况下才上传的。 3、适用对象...

    大数据分析算法.pptx

    MapReduce算法是比较典型的数据密集型并行算法。 并行算法 MapReduce体系结构 大数据分析算法全文共29页,当前为第10页。 概述 大数据分析算法的设计技术 什么是Anytime算法 Anytime算法,也称"任意时间算法"。在...

    深入理解大数据--大数据并行处理与编程实践

    在理论联系实际的基础上,在基础理论原理、实际算法设计方法以及业界深度技术三个层面上,精心组织材料编写而成。 全书的主要内容包括: ■ 大数据处理技术与Hadoop MapReduce简介 ■ Hadoop系统的安装和操作管理 ■...

    论文研究-基于MapReduce的Web日志挖掘.pdf

    LTE系统的设计、建模以及实现方法对仿真平台的有效性有直接影响,而目前功能较全的平台一般仿真速度较慢,针对这一问题,给出了LTE系统级仿真平台建模框架,并利用CPU多核以及OpenMP并行计算技术,对平台中耗时较多...

    数据算法 Hadoop Spark大数据处理技巧

    《数据算法:Hadoop/Spark大数据处理技巧》介绍了很多基本设计模式、优化技术和数据挖掘及机器学习解决方案,以解决生物信息学、基因组学、统计和社交网络分析等领域的很多问题。这还概要介绍了MapReduce、Hadoop和...

    Google_MapReduce中文版-系统架构

    MapReduce是一个编程模型,也是一个处理和生成超大数据集的算法模型的相关实现。用户首先创建 一个Map函数处理一个基于key/value pair的数据集合,输出中间的基于key/value pair的数据集合;然 后再创建一个Reduce...

    基于MapReduce模型带任务分割的平行机调度优化

    而后一工序不可划分,结合工件的到达时间、交货时间等约束,以最大完工时间和总延迟时间的加权和作为优化目标构建混合整数规划模型,设计采用差分变异策略和逐维角度扰动机制的改进鲸鱼优化算法求解模型.数值仿真实验...

    数据算法 Hadoop Spark大数据处理技巧.pdf

    Hadoop/Spark大数据处理技巧》介绍了很多基本设计模式、优化技术和数据挖掘及机器学习解决方案,以解决生物信息学、基因组学、统计和社交网络分析等领域的很多问题。这还概要介绍了MapReduce、Hadoop和Spark。, 主要...

    大数据综合实验,基于mapreduce实现的成绩分析系统,引入hadoop作云存储+源代码+文档说明

    1、资源内容:大数据综合实验,基于mapreduce的成绩分析系统,引入hadoop作云存储+源代码+文档说明 2、代码特点:内含运行结果,不会运行可私信,参数化编程、参数可方便更改、代码编程思路清晰、注释明细,都经过...

    基于Spark的机器学习平台设计与实现

    在算法设计过程中,本文针对大数据场景对经典算法进行一些改进优化工作。 例如,基于集成学习理论方法,采用Bagging策略来提高模型的稳定性;为了提 升计算效率,引入了基于采样的子梯度模型优化方法;

    数据算法 hadoop spark大数据处理技巧

    《数据算法:Hadoop/Spark大数据处理技巧》介绍了很多基本设计模式、优化技术和数据挖掘及机器学习解决方案,以解决生物信息学、基因组学、统计和社交网络分析等领域的很多问题。这还概要介绍了MapReduce、Hadoop和...

    数据算法 Hadoop Spark大数据处理技巧 中文完整版 高清带书签

    《数据算法:Hadoop/Spark大数据处理技巧》介绍了很多基本设计模式、优化技术和数据挖掘及机器学习解决方案,以解决生物信息学、基因组学、统计和社交网络分析等领域的很多问题。这还概要介绍了MapReduce、Hadoop和...

    基于MapReduce的粒子群投影寻踪模型的设计与实现

    利用MapReduce模式设计并实现了粒子群投影寻踪算法的并行化,以提高算法的效率.在分类阶段使用了基于MapReduce的KNN分类算法并行,实验结果表明:基于MapReduce实现的粒子群投影寻踪模型能够有效地寻找到较好的投影方向...

    Spark大数据处理:技术、应用与性能优化

    但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。Spark 是一种与 Hadoop 相似的开源集群计算环境,但是...

Global site tag (gtag.js) - Google Analytics