MapReduce是什么?

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。它极大的方便编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。它的实现是map函数和Reduce函数组成。这种编程模型在很长时间以前就出现了,但在以前这个编程模型不是非常火热。当GOOGLE将几篇关于MapReduce的文章发布出来之后,这个编程模型变得异常火爆,Hadoop的思想源于Google的几篇论文,提出来分布式计算框架mapreduce。

 

HADOOP-MapReduce是由那些组成的呢?

说到这里就不得不说他的架构结构,它由Client、JobTracker、TaskTracker、Task组成的。

HADOOP-MapReduce架构:

在hadoop项目结构中mapreduce指的是什么 mapreduce是hadoop中用来进行_数据

在hadoop项目结构中mapreduce指的是什么 mapreduce是hadoop中用来进行_数据



1.      Client

用户编写的MapReduce程序通过Client提交到JobTracker。

2.      JobTracker

主要负责资源监控和作业调度。JobTracker监控所有TaskTracker与作业的健康情况,一旦有失败情况后,其会将相应的任务给到其他节点上。

3.      TaskTracker

它会周期的将本节点资源使用和任务进度汇报给jobtracker,方式叫做“心跳”;与此同时接受jobTracker发送过来的命令并执行操作。

4.      Task

Task分为Map Task和Reduce Task两种,有TaskTracker启动。

Map Task将对应的输入信息解析成一个个的key/value对,调用map函数进行处理,最终将临时结果放到本地磁盘上,临时数据会被分成若干个partition,每个partition对应一个Reduce Task。

Reduce Task过程:从节点上读取Map Task中间结果;按照key对key/value对进行排序;调用reduce函数,将结果保存到HDFS上

 

知道HADOOP-MapReduce的架构图,我们来看一下他的执行流程:

1.      作业提交:首先有Client将作业相关信息上传到HDFS上,然后通知JobTracker。JobTracker接收到请求之后,有作业调度进行初始化,JobTracker会创建一个JobInProgress进程,作用是跟踪作业运行状况,并且为每个Task创建一个TaskInProgress来跟踪每个人物的运行状态。

2.      任务调度和监控:TaskTracker周期性的通过心跳向jobTracker汇报节点的资源使用情况,JobTracker按照一定策略选择一个合适的任务使用该空闲资源,这个就是任务调度器完成的工作了。另外JobTracker还要完成监控的作用,负责跟踪作业的整个与性过程,如果Tasktracker或者Task失败,将转移计算任务。

3.      任务环境准备:TaskTracker为每个Task启动一个JVM避免不同Task之间的冲突。

4.      任务执行:启动Task,运行过程中,每个Task通过RPC的方法是汇报给TaskTracker,再有TaskTracker汇报给JobTracker

5.      作业完成:所有的Task执行完毕后,整个作业执行成功。

 

说了这么多都是在说HADOOP是如何实现MAPREDUCE的,那么MAPREDUCE算法模型是如何做的呢?

MAPREDUCE主要分为两个过程,一个是MAP过程,另一个是REDUCE过程,MAP过程主要完成的是把一组数据一对一的映射成为另外的一组数据,其映射规则由一个函数来指定,比如三行数据为1,3 | 1,4 |  2,3,通过映射为【1:3】  |  【1:4】 | 【2:3】。REUCE是对一组数据进行规约,这个规约也有一个函数来制定,比如说对上面MAP输出的结果进行按键值合并规约为【1:3,4】 | 【2:3】。

 

MAPREDUCE编程模型在HADOOP生态系统中占有比较大的地位,我们需要好好理解这个模型,而且我们在利用HADOOP处理一些大数据问题的时候肯定是离不开MAPREDUCE的。以上是对MAPREDUCE的介绍,希望对大家有所帮助。