MapReduce 做的事情太多了。相比 unix 思想,它更多的是提供了一种策略(Policy),而非一种机制(Machanism)。
对于并行计算,如果我仅仅需要一种机制,暂且把这种机制叫做S,那么S只需要提供:
- 任意切分原始输入 ——split
- 无依赖的计算 ——map
- 按依赖切分中间结果 ——partition
- 有依赖的计算 ——reduce
- 容错 ——MR 矩阵(包括数据)
MapReduce当然提供了这个机制,只是,以它自己特定的方式(Policy)提供——就是排序。
Map 阶段是无依赖的计算,Reduce是有依赖的计算。Map的输入集合可以是任意顺序,任意切分,Combine可以看作只是为了提升效率而提前解决局部(local)依赖。
Reduce用来解决依赖,这个依赖,是按照Key的依赖,相同的Key和它的Value集合,是一个依赖集。
MapReduce 使用先排序,然后把整个Key-ValueList发送给应用接口,解决了这个问题。这样做,应用代码可以极大简化。但是,同时,这也严重地限制了性能。因为它做的事情,不是S的最小集。
一个S的最小集的实现:
- Map 处理每条输入记录——无依赖的计算
- Map 将处理后的记录按某种 Hash 规则进行切分,发送到各个 Reduce
- Map 发送记录的同时,将它备份到硬盘(或内存)
- Reduce 按自己的方式进行有依赖的计算(可以排序,也可以使用Hash<Key, *> 来解依赖)
如果 WordCount 使用这种方式,可以大幅提高速度,并减少内存用量。
分享到:
相关推荐
作为 Hadoop 程序员,需要做的事情包括: 1、定义 Mapper,处理输入的 Key-Value 对,输出中间结果。 2、定义 Reducer,可选,对中间结果进行规约,输出最终结果。 3、定义 InputFormat 和 OutputFormat,可选, ...
将任务输出保存到HDFS若对流程细节进行深究,可以得到这样一张流程图从生命周期的角度来看,mapreduce流程大概经历这样几个阶段:初始化、分配、执行、反馈、成功与失败的后续处理每个阶段所做的事情大致如下1
Python 应用领域概述 Python 是一种广泛应用的编程语言,自 2015 年开始在国内慢慢流行起来,特别是在 2016 年热度更高,目前已经成为"全民 ...Python 的应用领域非常广泛,学习 Python 之后可以做很多有趣的事情。
1,Spark是可以革命Hadoop的目前唯一替代者,能够做Hadoop做的一切事情,同时速度比Hadoop快了100倍以上: Logistic regression in Hadoop and Spark 可以看出在Spark特别擅长的领域其速度比Hadoop快120倍以上! ...
人工智能不断的发展,由于人工智能主要是利用智能学习算法,从大量的数据中学习经验来改善系统自身的性能,从而实现人类智慧所能做的事情。 文本分类是人工智能应用的一个重要方向,在现实生活中应用广泛,比如新闻...
MapReduce for PHP 扇出,扇入处理,用于PHP这个怎么运作你会需要工作来源( Workload ) 将其分解为大块的一种方法(一个Sharder ) 在每个块上要做的事情(一个Worker ) 一种Aggregator所有工作人员( Aggregator...
大数据作为当今时代的热门技术之一,对于初学者来说,入门学习是一件非常重要的事情。在这个过程中,阅读相关书籍是非常必要的。本文将推荐一些关于大数据的书籍,帮助初学者更好地入门和学习大数据相关技术。 ...
5. **大数据分析**:数据分析是大数据的核心,包括描述性分析(理解过去发生的事情),预测性分析(预测未来可能发生的事情)和规范性分析(建议应该采取的行动)。 6. **大数据应用**:大数据在众多领域都有应用,...
MapReduce 无法做到的事情 虽然 MapReduce 在处理大规模数据方面非常强大,但它也有一些局限性。本教程可能列举了一些不适合使用 MapReduce 解决的问题类型。 ### 15. Excel 在大数据中的应用 Excel 虽然被认为是...
1. 分析方法:大数据分析包括描述性分析(理解过去发生的事情)、预测性分析(预测未来可能发生的事情)和规范性分析(提出最优决策建议)。常用工具有R、Python、Tableau等。 2. 机器学习与人工智能:大数据与机器...
1. **误解:Hadoop 可以做任何事情** **正解:** Hadoop 并非万能解决方案。虽然它的设计目标是为了处理大量非结构化和半结构化数据,但并不意味着它可以无缝替代所有现有系统。如同早期的数据库,Hadoop 需要特定...
Secondary NameNode(SNN)只与NameNode通信,定时获取HDFS元数据的快照,一个集群只有一个SNN,且SNN所在节点只运行SNN守护进程,不干其它的事情。当NameNode出现故障后,可以人工启用SNN作为NameNode。 ...
离线数据分析方法涵盖描述性分析(了解过去发生的事情)、探索性分析(发现数据中的新信息)、预测性分析(预测未来趋势)和规范性分析(提出最佳决策建议)。 在mall-data-warehouse-main这个项目中,可能包含购物...
12. 大数据分析理念:大数据分析理念是指在数据基础上倾向于全体数据而不是抽样数据,在分析方法上更注重相关分析而不是因果分析,在分析效果上更追究效率而不是绝对精确。 13. 大数据技术战略意义:大数据技术的...
Hadoop允许用户轻松地在分布式环境中开发和运行应用程序,但要想掌握其使用技巧,对于初学者而言并不是一件容易的事情。以下知识点将帮助你更快地了解Hadoop,以及如何在不同的操作系统上安装和配置Hadoop集群。 ...
常用工具有Hadoop MapReduce、Spark、Python的Pandas库等。 6. 分析方法:包括统计分析、机器学习和深度学习。统计分析用于抽样、假设检验等;机器学习通过算法让计算机从数据中学习规律;深度学习通过神经网络模型...
现在没有被使用,而是在 DSParser 项目中开发了一些特性来在 java 中做同样的事情。 4.) DSOutputAnalyser:-包含分析unigrams、bigrams结果的工具。 5.) SLURM_Scripts:- 包含运行 Mahout Naive Bayes 的 SLURM
预测分析的核心概念之一是特征工程(Feature Engineering),这是指从原始数据中通过算法提取特征,这些特征应该能够代表数据的潜在结构和重要属性。特征工程的好坏直接影响到预测模型的准确性和有效性。 模型融合...