`
febird
  • 浏览: 256391 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MapReduce应该做更少的事情

阅读更多

MapReduce 做的事情太多了。相比 unix 思想,它更多的是提供了一种策略(Policy),而非一种机制(Machanism)。

对于并行计算,如果我仅仅需要一种机制,暂且把这种机制叫做S,那么S只需要提供:

  1. 任意切分原始输入  ——split
  2. 无依赖的计算    ——map
  3. 按依赖切分中间结果 ——partition
  4. 有依赖的计算    ——reduce
  5. 容错        ——MR 矩阵(包括数据)

MapReduce当然提供了这个机制,只是,以它自己特定的方式(Policy)提供——就是排序。

Map 阶段是无依赖的计算,Reduce是有依赖的计算。Map的输入集合可以是任意顺序,任意切分,Combine可以看作只是为了提升效率而提前解决局部(local)依赖。

Reduce用来解决依赖,这个依赖,是按照Key的依赖,相同的Key和它的Value集合,是一个依赖集。

MapReduce 使用先排序,然后把整个Key-ValueList发送给应用接口,解决了这个问题。这样做,应用代码可以极大简化。但是,同时,这也严重地限制了性能。因为它做的事情,不是S的最小集。

一个S的最小集的实现:

  1. Map 处理每条输入记录——无依赖的计算
  2. Map 将处理后的记录按某种 Hash 规则进行切分,发送到各个 Reduce
  3. Map 发送记录的同时,将它备份到硬盘(或内存)
  4. Reduce 按自己的方式进行有依赖的计算(可以排序,也可以使用Hash<Key, *> 来解依赖)

如果 WordCount 使用这种方式,可以大幅提高速度,并减少内存用量。

分享到:
评论

相关推荐

    分布式编程模式MapReduce应用[参考].pdf

    作为 Hadoop 程序员,需要做的事情包括: 1、定义 Mapper,处理输入的 Key-Value 对,输出中间结果。 2、定义 Reducer,可选,对中间结果进行规约,输出最终结果。 3、定义 InputFormat 和 OutputFormat,可选, ...

    MapReduce执行流程

    将任务输出保存到HDFS若对流程细节进行深究,可以得到这样一张流程图从生命周期的角度来看,mapreduce流程大概经历这样几个阶段:初始化、分配、执行、反馈、成功与失败的后续处理每个阶段所做的事情大致如下1

    你学完Python之后能做什么?.docx

    Python 应用领域概述 Python 是一种广泛应用的编程语言,自 2015 年开始在国内慢慢流行起来,特别是在 2016 年热度更高,目前已经成为"全民 ...Python 的应用领域非常广泛,学习 Python 之后可以做很多有趣的事情。

    你需要Spark的10个理由

    1,Spark是可以革命Hadoop的目前唯一替代者,能够做Hadoop做的一切事情,同时速度比Hadoop快了100倍以上: Logistic regression in Hadoop and Spark 可以看出在Spark特别擅长的领域其速度比Hadoop快120倍以上! ...

    基于大数据分析的文本智能识别系统的研究.pdf

    人工智能不断的发展,由于人工智能主要是利用智能学习算法,从大量的数据中学习经验来改善系统自身的性能,从而实现人类智慧所能做的事情。 文本分类是人工智能应用的一个重要方向,在现实生活中应用广泛,比如新闻...

    php-map-reduce:扇出,扇入处理,用于PHP

    MapReduce for PHP 扇出,扇入处理,用于PHP这个怎么运作你会需要工作来源( Workload ) 将其分解为大块的一种方法(一个Sharder ) 在每个块上要做的事情(一个Worker ) 一种Aggregator所有工作人员( Aggregator...

    初学者大数据入门,这这些书一定要要看.docx

    大数据作为当今时代的热门技术之一,对于初学者来说,入门学习是一件非常重要的事情。在这个过程中,阅读相关书籍是非常必要的。本文将推荐一些关于大数据的书籍,帮助初学者更好地入门和学习大数据相关技术。 ...

    策略周报:“以大为美”的演绎、逻辑及推演.zip

    5. **大数据分析**:数据分析是大数据的核心,包括描述性分析(理解过去发生的事情),预测性分析(预测未来可能发生的事情)和规范性分析(建议应该采取的行动)。 6. **大数据应用**:大数据在众多领域都有应用,...

    20 Short Tutorial for Data Scientist

    MapReduce 无法做到的事情 虽然 MapReduce 在处理大规模数据方面非常强大,但它也有一些局限性。本教程可能列举了一些不适合使用 MapReduce 解决的问题类型。 ### 15. Excel 在大数据中的应用 Excel 虽然被认为是...

    大数据基础加强

    1. 分析方法:大数据分析包括描述性分析(理解过去发生的事情)、预测性分析(预测未来可能发生的事情)和规范性分析(提出最优决策建议)。常用工具有R、Python、Tableau等。 2. 机器学习与人工智能:大数据与机器...

    常见的hadoop十大应用误解

    1. **误解:Hadoop 可以做任何事情** **正解:** Hadoop 并非万能解决方案。虽然它的设计目标是为了处理大量非结构化和半结构化数据,但并不意味着它可以无缝替代所有现有系统。如同早期的数据库,Hadoop 需要特定...

    hadoop学习手册

    Secondary NameNode(SNN)只与NameNode通信,定时获取HDFS元数据的快照,一个集群只有一个SNN,且SNN所在节点只运行SNN守护进程,不干其它的事情。当NameNode出现故障后,可以人工启用SNN作为NameNode。 ...

    大数据数据仓库建立和离线数据分析.zip

    离线数据分析方法涵盖描述性分析(了解过去发生的事情)、探索性分析(发现数据中的新信息)、预测性分析(预测未来趋势)和规范性分析(提出最佳决策建议)。 在mall-data-warehouse-main这个项目中,可能包含购物...

    大数据技术与应用题库完整.docx

    12. 大数据分析理念:大数据分析理念是指在数据基础上倾向于全体数据而不是抽样数据,在分析方法上更注重相关分析而不是因果分析,在分析效果上更追究效率而不是绝对精确。 13. 大数据技术战略意义:大数据技术的...

    【推荐】大数据时代,你不得不知的Hadoop使用技巧

    Hadoop允许用户轻松地在分布式环境中开发和运行应用程序,但要想掌握其使用技巧,对于初学者而言并不是一件容易的事情。以下知识点将帮助你更快地了解Hadoop,以及如何在不同的操作系统上安装和配置Hadoop集群。 ...

    大数据时代下计算机电子信息处理技术研究.zip

    常用工具有Hadoop MapReduce、Spark、Python的Pandas库等。 6. 分析方法:包括统计分析、机器学习和深度学习。统计分析用于抽样、假设检验等;机器学习通过算法让计算机从数据中学习规律;深度学习通过神经网络模型...

    yelp-dataset-project:Yelp 学术数据集项目

    现在没有被使用,而是在 DSParser 项目中开发了一些特性来在 java 中做同样的事情。 4.) DSOutputAnalyser:-包含分析unigrams、bigrams结果的工具。 5.) SLURM_Scripts:- 包含运行 Mahout Naive Bayes 的 SLURM

    论文研究-基于大数据的预测处理模式研究 .pdf

    预测分析的核心概念之一是特征工程(Feature Engineering),这是指从原始数据中通过算法提取特征,这些特征应该能够代表数据的潜在结构和重要属性。特征工程的好坏直接影响到预测模型的准确性和有效性。 模型融合...

Global site tag (gtag.js) - Google Analytics