`
esteem
  • 浏览: 156138 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

毕业论文 构思 Map/Reduce

阅读更多

又要毕业了,毕业论文难搞。

研究下Map/reduce 看能有所利用不。

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://dreamhead.blogbus.com/logs/2617482.html

MapReduce是Google的一项重要技术,它是一个编程模型,用以进行大数据量的计算。对于大数据量的计算,通常采用的处理手法就是并行计算。至少现阶段而言,对许多开发人员来说,并行计算还是一个比较遥远的东西。MapReduce就是一种简化并行计算的编程模型,它让那些没有多少并行计算经验的开发人员也可以开发并行应用。在我看来,这也就是MapReduce的价值所在,通过简化编程模型,降低了开发并行应用的入门门槛。相对于现在普通的开发而言,并行计算需要更多的专业知识,有了MapReduce,并行计算就可以得到更广泛的应用。

MapReduce的名字源于这个模型中的两项核心操作:Map和Reduce。也许熟悉Functional Programming的人见到这两个词会倍感亲切。简单的说来,Map是把一组数据一对一的映射为另外的一组数据,其映射的规则由一个函数来指定,比如对[1, 2, 3, 4]进行乘2的映射就变成了[2, 4, 6, 8]。Reduce是对一组数据进行归约,这个归约的规则由一个函数指定,比如对[1, 2, 3, 4]进行求和的归约得到结果是10,而对它进行求积的归约结果是24。

Map操作是独立的对每个元素进行操作,在FP中,操作是没有副作用的,换句话说,Map操作将产生一组全新的数据,而原来的数据保持不变。因此,它是高度并行的。Reduce操作虽然不如Map操作并行性那么好,但是它总会得到一个相对简单的结果,大规模运算也相对独立,因此也是比较适合并行的。

无论是Map还是Reduce都是以另外的函数作为参数,在FP中,这样的函数被称为高阶函数(high-order function)。正是因为它们可以同其它函数相结合,所以,我们只要把Map和Reduce这两个高阶函数进行并行化处理,而无需面面俱到的把所有的函数全部考虑到。这样便形成了一个以Map和Reduce为基础的框架,具体应用相关代码写在用户代码中,之后与MapReduce结合获得并行处理的能力。当然,这么做的前提是按照这个框架的要求,把计算归结为Map和Reduce操作。为什么是Map和Reduce?从前面的内容我们可以看出,在Map过程中,我们将数据并行,也就是将数据分开,而Reduce则把分开的数据合到了一起,换句话说,Map是一个分的过程,Reduce则对应着合,这一分一合便在不知不觉中完成了计算。所以,站在计算的两端来看,与我们通常熟悉的串行计算没有任何差别,所有的复杂性都在中间隐藏了。

所有这些并行化能力的获得都与FP有着密不可分的关系。事实上,不仅仅是MapReduce从FP中获得了灵感,其它一些并行编程模型也走上了同样的道路。FP中有很多的好东西,比如自动内存管理,比如动态类型。在遥远的年代里,因为机器性能的原因,它们无法得到广泛应用,当机器性能不再是瓶颈,这些东西便逐渐复活了。

前面提到过,并行计算对于普通开发人员来说,有一个比较高的门槛。从前我们或许可以不理会并行计算,但是随着Intel开始将多核带入人们的日常生活,并行计算将会变得更加平民化,毕竟谁也不希望自己机器里面的多核只有一个在干活。现在的许多操作系统会把多核视为多处理器,但那也得有多任务才能在CPU处多分得一杯羹。对于服务器端应用来说,拥有多任务的能力是一个正常的现象。但对于很多桌面应用来说,一条道跑到黑的情况比较多见。而且,多任务并非为并行计算专门准备的,所以,控制粒度是很大的。如果需要更细粒度的并行计算,至少从表达能力上来说,多任务就有些麻烦了。

并行计算进入日常开发的难度就在于编程模型,太复杂的东西会被人唾弃的,CORBA在这方面已经是个反面教材了。MapReduce已经为我们演示了一种可以接受的编程模型,接下来,变化还会有,Intel和AMD都在努力。不过,具体的进程得取决于多核CPU占领市场的进度。

===================

附上另外一个人blog上面的片段

计算样本数据中每个词语出现的频率。我的计算步骤就是先分词,然后用hash表处理。要是碰到TB的数据,我的赛扬CPU可是吃不消。那么放在MapReduce下面会是什么样子呢?

    下面是一个伪实现:
第一步:
    map(String key, String value):
    // key: 文档名称
    // value: 文档内容
    for each word w in value:
        EmitIntermediate(w, "1");
第二步:
    reduce(String key, Iterator values):
    // key: 一个词
    // values: 关于这个词的频率数据
    int result = 0;
        for each v in values:
            result += ParseInt(v);
        Emit(AsString(result));

分享到:
评论

相关推荐

    《毕业论文撰稿宝典》(EXE)

    本科毕业论文(设计)指导手册 毕业论文书写格式 毕业论文的结构 拟定结构提纲 形成论点和论据 引文、图表、加注 论文修改的方法 指导导师的条件和修养 毕业论文答辩的目的和意义 毕业论文答辩...

    毕业设计论文及相关 本科毕业论文(设计)指导手册

    本科毕业论文(设计)指导手册 毕业论文书写格式 毕业论文的结构 拟定结构提纲 形成论点和论据 引文、图表、加注 论文修改的方法 指导导师的条件和修养 毕业论文答辩的目的和意义 毕业论文答辩过程 毕业...

    毕业论文系列2021-毕业论文修改助手.zip

    综上所述,“毕业论文系列2021-毕业论文修改助手.zip”是一个全面的辅助工具,旨在为毕业生提供从构思到完成论文的全程支持,降低论文写作的压力,提升论文质量。通过“贝影论文修改助手”,学生可以更高效地完成...

    本科毕业论文(设计)指导手册

    本科毕业论文(设计)指导手册 毕业论文书写格式 毕业论文的结构 拟定结构提纲 形成论点和论据 引文、图表、加注 论文修改的方法 指导导师的条件和修养 毕业论文答辩的目的和意义 毕业论文答辩过程 毕业...

    毕业论文写作技巧1.pdf

    毕业论文写作是一项系统而严谨的学术活动,它不仅是学生在校学习成果的总结,也是对学生学术能力的检验。本文将围绕毕业论文的写作技巧进行详细说明,这些技巧包括满足硬性指标、形成独立观点、避免抄袭以及确保论文...

    毕业论文系列2021-毕业论文答辩流程1.docx

    ### 毕业论文答辩流程详解 #### 一、毕业论文答辩概述 毕业论文答辩是学生完成学业前的重要环节之一,旨在检验学生对其所撰写的毕业论文内容的掌握程度及其研究能力。通常,答辩分为两个主要阶段:一是学生对论文...

    汕头大学本科毕业论文规范和附件资料若干.rar

    汕头大学本科毕业论文规范是指导学生完成高质量学术论文的重要指南,涵盖了从论文构思到最终成稿的各个环节。这篇文档将详细解析这些规范和附件资料,帮助理解每一份文件的重要性和作用。 首先,"毕业论文(设计)...

    2012届电子系毕业论文工作计划

    【毕业论文工作计划详解】 毕业论文对于电子系的2012届毕业生而言,是一个至关重要的环节,它不仅是教学过程中的核心部分,也是实践教学的重要组成。在这个过程中,学生们能够运用所学的基础知识和专业知识,提升...

    JAVA方向大学生毕业设计+毕业论文

    【标题】"JAVA方向大学生毕业设计+毕业论文"所涉及的知识点主要集中在Java编程语言、软件工程、数据库管理和信息系统设计等方面。Java是一种广泛应用于企业级应用开发的面向对象的编程语言,其特点是跨平台性、安全...

    计算机科学与技术专业毕业设计毕业论文要求.pdf

    毕业论文有所不同,这个阶段完成文献资料的收集整理和阅读理解,寻找解决问题的方法或技术,构思论文的整体框架,提交的提纲应当描述论文的写作结构及摘要。 毕业设计和毕业论文的要求包括标题、摘要、关键词、目录、...

    毕业论文任务书模板---实用

    毕业论文任务书模板---实用 本资源摘要信息是关于毕业论文任务书模板的知识点汇总,旨在帮助即将毕业的学生,特别是 Java 游戏开发方向的学生,了解毕业设计(论文)的主要任务和目标、基本要求、进度安排等内容。 ...

    如何写好毕业论文 如何写论文

    【如何写好毕业论文】 写好毕业论文是一个系统的过程,涉及到多方面的技能和策略。首先,明确写作目标,清楚地知道自己想要表达的核心思想至关重要。在写作初期,可能会觉得思路混乱,这时可以尝试将自己的想法写...

    毕业论文答辩注意事项,如何答辩,答辩高分秘籍

    毕业论文答辩注意事项,如何答辩,答辩高分秘籍 毕业论文答辩是学生完成学业的最后一站,对于学生来说,这是一个非常重要的环节。毕业论文答辩的目的是检查毕业生是否认真独立完成毕业论文,考察毕业生综合分析能力...

    2010毕业论文材料

    【标题】"2010毕业论文材料"指的是一个包含2010年毕业论文相关资料的压缩包文件。这通常意味着它可能包含了当年毕业生在完成学位课程时所撰写的论文,以及与之相关的研究、数据、图表、引用文献等各种支持性材料。...

    android贪吃蛇设计毕业论文

    《Android贪吃蛇设计毕业论文》是一篇详细探讨在Android平台上设计并实现贪吃蛇游戏的学术论文。本文从Android的基础知识出发,深入探讨了该项目的目的、意义、国内外现状及发展趋势,随后对项目的可行性进行了论证...

    本科毕业论文基本要求内容.doc

    毕业论文是培养和检验学生结合所学基本理论、基本知识、基本技能分析问题、解决问题的能力,通过试验设计方案的构思和实施,使学生在意志品德、工作能力、工作态度和创新能力等方面得到全面提高。 二、毕业论文的...

    毕业论文教案共4页.pdf.zip

    它包含了一份四页长的教案,这份教案可能详细指导了如何构思、研究和撰写毕业论文,涵盖了选题、文献综述、方法论、数据分析和结论等方面。对于学生来说,这样的教案能够提供宝贵的写作指导,帮助他们提高论文质量。...

    毕业论文系列2021-如何准备毕业论文写作.docx

    毕业论文系列2021-如何准备毕业论文写作 一、论文题目的确定 论文题目的确定是毕业论文写作的第一步,也是最重要的一步。论文题目的设计需要遵守三项规则:一、题目必须是动宾结构的短语,不能是句子;二、题目只...

Global site tag (gtag.js) - Google Analytics