当前位置: 首页 > 面试题库 >

MapReduce是什么?有哪些特征和优点?

翟光赫
2023-05-12

MapReduce是什么

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

Hadoop MapReduce是一个分布式计算框架,用于轻松编写分布式应用程序,这些应用程序以可靠,容错的方式并行处理大型硬件集群(数千个节点)上的大量数据(多TB数据集)。

MapReduce是一种面向海量数据处理的一种指导思想,也是一种用于对大规模数据进行分布式计算的编程模型。

MapReduce是面向大数据并行处理的计算模型、框架和平台,它隐含了以下三层含义:

1)MapReduce是一个基于集群的高性能并行计算平台(Cluster Infrastructure)。它允许用市场上普通的商用服务器构成一个包含数十、数百至数千个节点的分布和并行计算集群。

2)MapReduce是一个并行计算与运行软件框架(Software Framework)。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算涉及到的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。

3)MapReduce是一个并行程序设计模型与方法(Programming Model & Methodology)。它借助于函数式程序设计语言Lisp的设计思想,提供了一种简便的并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了抽象的操作和并行编程接口,以简单方便地完成大规模数据的编程和计算处理。

发展历程

MapReduce最早由Google于2004年在一篇名为《MapReduce:Simplified Data Processingon Large Clusters》的论文中提出。

论文中谷歌把分布式数据处理的过程拆分为Map和Reduce两个操作函数(受到函数式编程语言的启发),随后被 Apache Hadoop参考并作为开源版本提供支持,叫做Hadoop MapReduce。

它的出现解决了人们在最初面临海量数据束手无策的问题,同时它还是易于使用和高度可扩展的,使得开发者无需关系分布式系统底层的复杂性即可很容易的编写分布式数据处理程序,并在成千上万台普通的商用服务器中运行。

MapReduce特点

易于编程

Mapreduce框架提供了用于二次开发的接口;简单地实现一些接口,就可以完成一个分布式程序。任务计算交给计算框架去处理,将分布式程序部署到hadoop集群上运行,集群节点可以扩展到成百上千个等。

良好的扩展性

当计算机资源不能得到满足的时候,可以通过增加机器来扩展它的计算能力。基于MapReduce的分布式计算得特点可以随节点数目增长保持近似于线性的增长,这个特点是MapReduce处理海量数据的关键,通过将计算节点增至几百或者几千可以很容易地处理数百TB甚至PB级别的离线数据。

高容错性

Hadoop集群是分布式搭建和部署得,任何单一机器节点宕机了,它可以把上面的计算任务转移到另一个节点上运行,不影响整个作业任务得完成,过程完全是由Hadoop内部完成的。

适合海量数据的离线处理

可以处理GB、TB和PB级别得数据量

MapReduce局限性

MapReduce虽然有很多的优势,也有相对得局限性,局限性不代表不能做,而是在有些场景下实现的效果比较差,并不适合用MapReduce来处理,主要表现在以下结果方面:

实时计算性能差

MapReduce主要应用于离线作业,无法作到秒级或者是亚秒级得数据响应。

不能进行流式计算

流式计算特点是数据是源源不断得计算,并且数据是动态的;而MapReduce作为一个离线计算框架,主要是针对静态数据集得,数据是不能动态变化得。

 类似资料:
  • 与大家熟知的 Windows 操作系统软件一样,Linux 也是一个操作系统软件,其 logo 是一只企鹅(如图 1 所示)。与 Windows 不同之处在于,Linux 是一套开放源代码程序的、可以自由传播的类 Unix 操作系统软件。 图 1 Linux 操作系统图标 Unix 系统是 Linux 系统的前身,具备很多优秀特性。有关 Unix 和 Linux 更多的介绍,可阅读《Linux和U

  • 本文向大家介绍聚类算法有哪些,优缺点是什么?相关面试题,主要包含被问及聚类算法有哪些,优缺点是什么?时的应答技巧和注意事项,需要的朋友参考一下 基于层次的聚类 做法是将每个对象都看做一个类,计算两两之间距离最小的对象归为一类,然后重复这样的操作直至成为一个类,这种方式是采用贪心的方法,一步错步步错,时间复杂度过高,可解释性比较好 基于划分的聚类(k-Means) 原则是保证簇内的数据距离尽可能小,

  • 1、Spring Boot简介 基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突、引用的不稳定性得到了解决。 2、Spring Boot 有哪些优点? 快速构建项目,可以选一些必要的组件; 对主流框架的无配置集成; 内嵌Tomcat容器,项目可独立

  • 本文向大家介绍为什么用Nodejs,它有哪些优缺点?相关面试题,主要包含被问及为什么用Nodejs,它有哪些优缺点?时的应答技巧和注意事项,需要的朋友参考一下 Nodejs的优点 事件驱动,通过闭包很容易实现客户端的生命活期。 不用担心多线程,锁,并行计算的问题 V8引擎速度非常快 对于游戏来说,写一遍游戏逻辑代码,前端后端通用 当然Nodejs也有一些缺点: nodejs更新很快,可能会出现版本

  • 本文向大家介绍什么是SOAP,有哪些应用。相关面试题,主要包含被问及什么是SOAP,有哪些应用。时的应答技巧和注意事项,需要的朋友参考一下 答: simple object access protocal,简单对象接受协议.以xml为基本编码结构,建立在已有通信协议上(如http,不过据说ms在搞最底层的架构在tcp/ip上的soap)的一种规范Web Service使用的协议  

  • 主要内容:Python的优点,Python 的缺点Python 是一种开源的解释型脚本编程语言,它之所以非常流行,主要有三点原因: Python 简单易用,学习成本低,看起来非常优雅干净; Python 标准库和第三库众多,功能强大,既可以开发小工具,也可以开发企业级应用; Python 站在了人工智能和大数据的风口上,站在风口上,猪都能飞起来。 举个简单的例子来说明一下 Python 的简单: 比如要实现某个功能,C语言可能需要 100 行代码

  • 前面的小节我们学习了一些前置知识和 Docker 的基本原理,那么,你可能会问了:Docker 到底有哪些优点呢?我们为什么要学习 Docker 呢?别着急,这节课我们就来细数下 Docker 的优点: 1. 更好的安全性 如果服务器上启动了多个服务,这些服务可能会相互影响的,每一个服务都能看到其他服务的进程,也可以访问宿主机器上的任意文件,这种情况下,一旦服务器上的某一个服务被入侵,那么入侵者就

  • 本文向大家介绍什么是hack?css的hack有哪些?相关面试题,主要包含被问及什么是hack?css的hack有哪些?时的应答技巧和注意事项,需要的朋友参考一下 https://www.cnblogs.com/Renyi-Fan/p/9006084.html