Hadoop MapRedue是如何实现计算向数据靠拢?

如题所述

大规模数据处理时,MapReduce在三个层面上的基本构思:如何对付大数据处理:分而治之。对相互间不具有计算依赖关系的大数据,实现并行最自然的办法就是采取分而治之的策略。上升到抽象模型:Mapper与Reducer。MPI等并行计算方法缺少高层并行编程模型,为了克服这一缺陷,MapReduce借鉴了Lisp函数式语言中的思想,用Map和Reduce两个函数提供了高层的并行编程抽象模型。上升到构架:统一构架,为程序员隐藏系统层细节。MPI等并行计算方法缺少统一的计算框架支持,程序员需要考虑数据存储、划分、分发、结果收集、错误恢复等诸多细节;为此,MapReduce设计并提供了统一的计算框架,为程序员隐藏了绝大多数系统层面的处理细节。MapReduce借鉴了函数式程序设计语言Lisp中的思想,定义了如下的Map和Reduce两个抽象的编程接口,由用户去编程实现:map:(k1;v1)[(k2;v2)]输入:键值对(k1;v1)表示的数据。处理:文档数据记录[(k2;v2)](如文本文件中的行,或数据表格中的行)将以“键值对”形式传入map函数;map函数将处理这些键值对,并以另一种键。值对形式输出处理的一组键值对中间结果。输出:键值对[(k2;v2)]表示的一组中间数据。reduce:(k2;[v2])[(k3;v3)]输入:由map输出的一组键值对[(k2;v2)]将被进行合并处理将同样主键下的不同数值合并到一个列表[v2]中,故reduce的输入为(k2;[v2])处理:对传入的中间结果列表数据进行某种整理或进一步的处理,并产生最终的某种形式的结果输出[(k3;v3)]。输出:最终输出结果[(k3;v3)]。Map和Reduce为程序员提供了一个清晰的操作接口抽象描述。
温馨提示:答案为网友推荐,仅供参考