CDA数据分析师(CDA.cn)——真本事,心舒适
大数据系列之计算框架MapReduce
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等计算框架。
CDA数据分析师(CDA.cn)——真本事,心舒适
2、MapReduce运行原理
核心思想是移动计算(代码)的成本低于移动数据的成本,所以只移动计算不移动数据。 MapReduce过程大致分两个阶段,map阶段和reduce阶段,每个阶段都以键值对作为输入与输出,其具体的类型由代码决定,代码中需要给出map与reduce函数的具体实现 高度并行的map阶段
在这个阶段, 输入数据被split为离散的块,可以被分别/并行处理
在map阶段, 通常执行输入格式解析、 投影(选择相关的字段)和过滤(删除不感兴趣的记录) reduce阶段
一个聚合或汇总的阶段。 在这个阶段, map阶段的输出被聚合以产生期望的结果,所有相关的记录(record)必须被集中在一起由一个单一的实例处理。
CDA数据分析师(CDA.cn)——真本事,心舒适
其实在map函数与reduce函数之间还有个shuffle过程,比较复杂我们在下章讲解。
3、MapReduce的优缺点
MapReduce的优点:
易于编程;
良好的扩展性;
高容错性;
适合PB级别以上的大数据的分布式离线批处理。
MapReduce的缺点:
CDA数据分析师(CDA.cn)——真本事,心舒适
难以实时计算(MapReduce处理的是存储在本地磁盘上的离线数据)
不能流式计算(MapReduce设计处理的数据源是静态的)
难以DAG计算(有向无环图计算,由于多个任务存在依赖关系,后一个应用的输入是前一个应用的输出。解决这一问题的方式有Apache的Tez计算框架,它是基于hadoop Yarn之上的DAG计算框架,它将MapReduce任务分解为多个子任务同时可以把多个Map/ Reduce任务合并成一个大的DAG任务,这样当前一个任务完成之后,直接将结果输出给下一个任务,不用将结果写到磁盘之上,减少了Map/Reduce之间的文件存储。同时合理的组合其子过程,减少了任务的运行时间。)。