1、mapreduce概述
a.mapreduce是一种分布式的计算模型,由google提出,主要用于搜索领域,解决海量数据的计算问题。
b.mapreduce由两个阶段组成,map和reduce,用户只需要实现map()和reduce()两个函数,即可实现分布式计算。
c.这两个函数的key,value对,表示函数的输入信息。
2.mapreducer的作业执行流程:
图解:
3.MR过程中各个角色的作用:
1)
JobTracker
:
负责接收用户提交的作业,负责启动,跟踪任务,
:初始化作业,分配作业协调监控整个作业
JobSubmissionProtocol是JobClient和JobTracker通信的接口
InterTrackerProtocol是TaskTracker与JobTracker通信的接口
2)JobClient::用户作业与JobTracker交互的主要接口,负责提交作业,负责启动,跟踪任务的执行,访问任务状态和日志
3)TaskTracker:定期与JobTracker通信,执行Map和Reduce任务
4)HDFS:保存作业的数据,配置,jar包,结果
4.MR执行流程细节:
1)作业提交:
a.提交作业之前,需要对作业进行配置:编写自己的MR程序;配置作业,包括输入输出路径等
b.提交作业,配置完成后,通过JobClient提交
c.具体功能:
JobClient与JobTracker通信得到一个jar包的存储路径和jobid;
输入输出路径检查是否存在
将job的jar包拷贝到HDFS
计算输入切片,将分片信息写到job.split中,切片的数量决定要启动几个mao任务
写job.xml
真正提交作业
2)作业初始化:
a.客户端提交作业后,JobTracker会将作业加入到作业调度器中,是一个队列的结构,然后进行作业的调度,默认是FIFO.
b.具体功能:
作业初始化主要是指JobInprocess中完成