大数据系列之计算框架MapReduce

CDA数据分析师 出品

1、 MapReduce计算框架简介

Mapreduce 是hadoop项目中的分布式运算程序的编程框架,是用户开发"基于hadoop的数据分析应用"的核心框架,Mapreduce 程序本质上是并行运行的。分布式程序运行在大规模计算机集群上,可以并行执行大规模数据处理任务,从而获得巨大的计算能力。谷歌公司最先提出了分布式并行编程模型MapReduce,Hadoop MapReduce是它的开源实现。

Hadoop发展到现在已经有三代了(这里的代指的是软件版本号后的第一位数字,如我们用的版本为2.7.5 就是指第二代,第二代可以表示为hadoop2.x或hadoop2,一代表示为hadoop1或hadoop1.x),目前主流的是hadoop2,与之对应的就是mapreduce2。下图为hadoop1平台与hadoop2平台的对比。可以看到hadoop1中平台和计算框架是一体的,对于一个集群只能有一个计算框架,而在hadoop2中平台(资源管理yarn)与计算框架是分离出来的,这样一个平台就可以对应多个计算框架了比如可以在运行MapReduce的时候还可以运行spark等计算框架。

2、 MapReduce运行原理

核心思想是移动计算(代码)的成本低于移动数据的成本,所以只移动计算不移动数据。

MapReduce过程大致分两个阶段,map阶段和reduce阶段,每个阶段都以键值对作为输入与输出,其具体的类型由代码决定,代码中需要给出map与reduce函数的具体实现高度并行的map阶段

在这个阶段, 输入数据被split为离散的块,可以被分别/并行处理 在map阶段, 通常执行输入格式解析、 投影(选择相关的字段)和过滤(删除不感兴趣的记录)

reduce阶段 一个聚合或汇总的阶段。 在这个阶段, map阶段的输出被聚合以产生期望的结果,所有相关的记录(record)必须被集中在一起由一个单一的实例处理。

其实在map函数与reduce函数之间还有个shuffle过程,比较复杂我们在下章讲解。

3、 MapReduce的优缺点

MapReduce的优点:

  • 易于编程;
  • 良好的扩展性;
  • 高容错性;
  • 适合PB级别以上的大数据的分布式离线批处理。

MapReduce的缺点:

  • 难以实时计算(MapReduce处理的是存储在本地磁盘上的离线数据)
  • 不能流式计算(MapReduce设计处理的数据源是静态的)
  • 难以DAG计算

(有向无环图计算,由于多个任务存在依赖关系,后一个应用的输入是前一个应用的输出。解决这一问题的方式有Apache的Tez计算框架,它是基于hadoop Yarn之上的DAG计算框架,它将MapReduce任务分解为多个子任务同时可以把多个Map/ Reduce任务合并成一个大的DAG任务,这样当前一个任务完成之后,直接将结果输出给下一个任务,不用将结果写到磁盘之上,减少了Map/Reduce之间的文件存储。同时合理的组合其子过程,减少了任务的运行时间。)。

疫情当下,昔日匆匆的步伐终于放慢了些,也是时候好好想想自己的职业计划和人生规划了。提前做好准备,未雨绸缪,为未来蓄能——蓄势待发!

发布了2756 篇原创文章 · 获赞 281 · 访问量 58万+

猜你喜欢

转载自blog.csdn.net/yoggieCDA/article/details/105675475