MapReduce那点事

一、概述

MapReduce是一种分布式计算模型,由两个阶段组成:Map和Reduce,用户只需要实现map()和reduce()两个函数,即可实现分布式计算。

这两个函数的形参是key、value对,表示函数的输入信息。

其中map(),输入键值对<k1,v1>,输出键值对<k2,v2>;

reduce(),输入键值对<k2,{v2}>,输出键值对<k3,v3>。


二、MapReduce原理

三、Map任务处理

1、读取输入文件内容,解析成key、value对。对输入文件的每一行,解析成 key、value对。每一个键值对调用一次map函数。

2 、写自己的逻辑,处理输入的key、value,转换成新的key、value输出。

3 、对输出的key、value进行分区。

4 、对不同分区的数据,按照key进行排序、分组。相同key的value放到一个集合中。

5  、 (可选)分组后的数据进行归约。


四、Reduce任务处理

1、对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点。

2 、对多个map任务的输出进行合并、排序。写reduce函数自己的逻辑,对输入的key、value处理,转换成新的key、value输出。

3 、把reduce的输出保存到HDFS文件中。


五、Map任务和Reduce任务举例

假如我们要做一个词频统计的任务,在HDFS中的words文件内容

YSL 17

纪梵希 303

香奈儿 46

YSL 12

YSL 14


Map输入这一步由MapReduce框架自动完成,


Reduce输入这一步由MapReduce框架自动完成,



六、MapReduce流程分析

1、过程各个角色的作用

jobClient:提交作业

JobTracker:初始化作业,分配作业,TaskTracker与其进行通信,协调监控整个作业

TaskTracker:定期与JobTracker通信,执行Map和Reduce任务

HDFS:保存作业的数据、配置、jar包、结果

2、作业提交流程

(1)提交作业准备:编写自己的MR程序; 配置作业,包括输入输出路径等等。

(2)提交作业:配置完成后,通过JobClient提交。

(3)具体功能:与JobTracker通信得到一个jar的存储路径和JobId,输入输出路径检查、将jobj ar拷贝到的HDFS。


3、作业初始化

客户端提交作业后,JobTracker会将作业加入到队列,然后进行调度,默认是FIFO方式。

具体功能:作业初始化主要是指JobInProgress中完成的。

读取分片信息。创建task包括Map和Reduce任创建task包括Map和Reduce任务。

创建TaskInProgress执行task,包括map任务和reduce任务。


4、任务分配

TaskTracker与JobTracker之间的通信和任务分配是通过心跳机制实现的

TaskTracker会主动定期向JobTracker发送报告,询问是否有任务要做,如果有,就会申请到任务。


5、任务执行

如果TaskTracker拿到任务,会将所有信息拷贝到本地,包括代码、配置、分片信息等。

TaskTracker中的localizeJob()方法会被调用进行本地化,拷贝job.jar,jobconf,job.xml到本地。

TaskTracker调用launchTaskForJob()方法加载启动任务。

MapTaskRunner和ReduceTaskRunner分别启动java child进程来执行相应的任务。


6、错误处理

a、JobTracker失败

存在单点故障,hadoop2.0解决了这个问题

b、TraskTracker失败

TraskTracker崩溃了会停止向JobTracker发送心跳信息。

JobTracker会将TraskTracker从等待的任务池中移除,并将该任务转移到其他的地方执行

JobTracker将TaskTracker加入到黑名单中

c、Task失败

任务失败,会向TraskTracker抛出异常,最后任务挂起

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • MapReduce框架结构## MapReduce是一个用于大规模数据处理的分布式计算模型MapReduce模型主...
    Bloo_m阅读 3,788评论 0 4
  • MapReduce是一个数据处理的编程模型。这个模型很简单,但也不是简单到不能够支持一些有用的语言。Hadoop能...
    单行线的旋律阅读 1,536评论 0 2
  • 目的这篇教程从用户的角度出发,全面地介绍了Hadoop Map/Reduce框架的各个方面。先决条件请先确认Had...
    SeanC52111阅读 1,755评论 0 1
  • MapReduce是面向大数据并行处理的计算模型、框架和平台。MapReduce是一个基于集群的高性能并行计算平台...
    VVictoriaLee阅读 435评论 0 1
  • 石参,姓孔,安徽人,60后,注册会计师。 石参进围棋群很早,十多年了,是群里的高手之一,在弈城网上能升到8D,长期...
    天山客阅读 521评论 0 0