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

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

阅读更多

1. 反序(order inversion)模式

        通过反序模式,我们可以控制中间结果进入reducer的顺序,从而在reducer中先计算出一些结果(根据先进入reducer的中间结果计算出),而这些结果对于高效处理后续的数据很有意义。要使用反序模式,需要先将算法中的操作序问题转化为一般排序问题。

       以共现矩阵为例,要计算相对频率问题。

 

(1)stripe算法的调整

    改进为计算相对频度很简单:只需要在原先的reduce操作完毕后,再加上一步类似于归一化的操作,即,对于每个(w, H=[(w1,c1),(w2,c2)…(wn,cn)]),先遍历一遍H,计算计数加和S=c1+c2+…+cn,然后再次遍历H,将H更新为[(w1,c1/S),(w2,c2/S)…(wn,cn/S)]即可。

 

(2)pair算法调整

      pair算法中,reducer接受的数据类型是((wi,wj),count). 这里key使用的是自定义类型的数据。我们可以在reducer中构建类似于stripe算法中的关联数组H,类似于(w, H=[(w1,c1),(w2,c2)…(wn,cn)]). 对于(wi,ci)∈H,ci即为共现(w,wi)的计数(频度)。当所有与w有关的共现都已统计完毕,即可计算相对频度。

 

还需要解决的两个问题:

1)需要要所有具有相同wi的((wi,wj),1)输出到同一个reduce节点,这个只需要实现自定义的partitioner,这个partitioner仅仅根据key中的左值(即wi)计算hash.

2)其次,(wi, wj)先根据wi排序,再根据wj排序

 

(3) 存在的共同问题,value值可能很大,造成oom

 

    解决办法(即使用反序模式):在最初的pair算法中,mapper输出的数据类型是((wi,wj),1). 在此基础上对mapper做一点小改动:每次生成一个((wi,wj),1),我们额外生成一个((wi,*),1),用以表示包含wi的共现计数加1. 这两种中间对经过combiner的合并后将会分别变成形如((wi,wj),[cij1,cij2,…,cijn])与((wi,*),[ci1,ci2,…,cin])的中间结果。如果reducer能够先处理后者,再处理前者,那么就可以先计算出所有包含wi的共现计数和S,计算出S后即可直接处理所有形如((wi,wj),[cij1,cij2,…,cijn])的中间结果,无需记录庞大的关联数组了。要做到这一点,我们只要保证送入reducer中的数据((wi,*),1)类的key-value对排在((wi,wj),1)之前即可,这可以通过修改排序规则达成。

 

2. 二次排序,value移动到key的模式(value-to-key conversion design pattern)

       二次排序即相同的key对应的value,希望在处理时是有序的,直观的处理方式是,获取到key的所有value,再做排序。但是这里存在一个潜在的危险,即value值可能很多,内存放不下,从而oom错误。可以使用value-to-key conversion design pattern的模式处理这个问题,原理很简单,就是将要排序的value值,移动到原始的key中,一起组成一个复合的key值pair(key,value),从而利用hadoop框架的排序能力。 在写map任务时,一些调整点:

      (1)pair的第一个key相同,发到相同的reduce节点

      (2)实现pair的排序规则,先key排序,再按value排序

      (3)需要实现GroupingComparator,根据相同的pair中的key进行分组

分享到:
评论

相关推荐

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

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

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

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

    大数据算法(一).pdf

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

    基于Hadoop MapReduce的矩阵乘法

    目标检测模型、智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、智能控制、路径规划、无人机等多种领域的算法仿真实验,更多源码,请上博主主页搜索。 ---------------------------------------------...

    大数据分析算法.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作云存储+源代码+文档说明

    目标检测模型、智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、智能控制、路径规划、无人机等多种领域的算法仿真实验,更多源码,请上博主主页搜索。 ---------------------------------------------...

    基于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