1、以上两个图说明,在mr程序执行的时候,其实分别调用了MapTask的run方法和ReduceTask的run方法
这个方法都要一个共同的特点,就是,在run执行前,也就是map方法/reduce方法执行前,要先调用setup方法。在map/reduce方法执行后,要调用cleanup方法
这两个方法是以后我们要注意的点。setup可以加载资源文件,cleanup可以做收尾工作
2、在map方法之前,会将文件的切片信息传入context对象中,我们在map方法就能拿到这个切片的详细信息,文件名、路径、偏移量等等
3、mapreduce运行模式有两种
1)、本地模式(local)
单进程,多个线程去运行maptask和reduceTask,主管类:LocalJobRunner
2)、yarn模式
分布式、多个服务器多个进程,每个进程运行一个task(map/reduce) ,主管类MRAppMaster
4、想要yarn模式运行三个参数必不可少
1、conf.set("fs.defaultFS","dream1")
2、conf.set("mapreduce.framework.name","yarn")
3、conf.set("yarn.resourcemanager.hostname","dream1")
这三个参数默认写在服务器的配置文件里,代码中不要配置,这样在开发环境下默认就是本地,服务器上默认就是yarn模式
5、yarn模式代码中要加两行代码,第一个必须,第二个非必须
//指定jar包位置,分布式运行,jar包必须要分发到各个nodemanager所以需要指定jar包位置,两种方式 后者好
job.setJar("/root/temps/xx.jar")
job.setJarByClass(MrRunner.class)
//指定资源文件,比如map端join的小表
job.setCacheFiles()