8/24

1.1 MapReduce是什么
MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。

MapReduce是hadoop的核心组件之一,hadoop要实现分布式需要包括两部分,一部分是分布式文件系统 HDFS,一部分是分布式计算框架 MapReduce。MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。

1.2 MapReduce核心思想和简单过程
MapReduce计算框架用来处理海量数据,而一台计算机不可能计算如此大量的数据,一台不行那就使用多台一起处理数据。“ 分而治之 ”是MapReduce的核心思想。

MapReduce有两个过程:

map阶段
Map负责把一个任务分解成多个任务进行处理。任务分配等会增加程序的复杂性,但人多力量大,效率也会有明显地提高。

reduce阶段
Reduce负责对map阶段的结果进行汇总输出。

下面这个例子就很好的体现了MapReduce的思想

果园里有1000颗果树,现在要计算一共有多少个果子。

如果一个人算,就算这个人算的再快也一定要算好久,也有很大的可能 算着算着不想算罢工了 或者 超负荷去医院了;
但1000个人算的话,分配到每人身上的任务就只剩下一棵树了,虽然需要额外花点时间安排哪些人算哪些树和资源,但1000人同时开始,效率得到了极大的提高,最后将这1000个人所算的数进行汇总得到总果子数。
注:后面还将具体介绍MapReduce工作过程。

1.3 MapReduce的优缺点
优点

MapReduce易于编程
只需要实现一些简单接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的PC机器上运行。也就是说你写一个分布式程序,就跟写一个简单的串行程序是一模一样的。

良好的扩展性(hadoop的特点)
当你的计算资源不能满足的时候,你可以通过简单的增加机器(nodemanager)来扩展它的计算能力

高容错性
MapReduce设计的初衷就是使程序能够部署在廉价的PC机器上,这就要求它具有很高的容错性,比如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上运行,不至于整个任务运行失败。

适合PB级以上海量数据的离线处理
可以实现上千台服务器集群并发工作,提供数据处理能力

缺点

不擅长实时计算
MapReduce无法像MySQL一样,在毫秒或者秒级内返回结果

不擅长流式计算
流式计算的输入数据是动态的,而MapReduce的输入数据集是静态的,不能动态变化。这是因为MapReduce自身的设计特点决定了数据源必须是静态的

不擅长DAG有向图计算
多个应用程序之间存在依赖关系,后一个应用程序的输入为前一个程序的输出。在这种情况下,每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,导致性能非常低下



posted @   小白同学321  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
点击右上角即可分享
微信分享提示