mr

分区

1. 作用用于将数据进行分类

2一个分区要对应一个ReduceTask,每一个ReduceTask都会产生一个结果文件

3. ReduceTask的数量可以多于分区的数量

4自定义分区,那么需要写一个类继承Partitioner,然后重写其中的方法

一、数据本地化策略

1. 当JobTracker收到提交的MR程序之后,会访问NameNode

2. NameNode会将文件的描述信息返回给JobTracker

3. JobTracker会根据描述信息对文件进行切片。

4. 根据切片的数量计算MapTask的数量,然后JobTracker将MapTask分配有到对应的Block的节点上,这个过程称之为数据本地化策略

.数据本地化策略的目的是为了减少网络的传输

二、job执行流程

1. 客户端提交jar包 - hadoop jar xxx.jar 时,校验通过会分配一个job和一个HDFS地址,将地址返回给客户端

2. 客户端将程序提交到相应的HDFS地址上

3. 提交job,开始执行MapReduce程序

4. 将job由JobTracker执行,然后JobTracker将文件进行切片,并且计算MapTask以及ReduceTask的数量

5. JobTracker上有了任务,就要进行任务的分配,在分配/领取任务的时候,MapTask要满足数据的本地化;ReduceTask会分配到相对空闲的节点上

6. TaskTracker将jar包下载到对应的节点上,开始执行MapTask或者ReduceTask - 体现了逻辑移动而数据固定的思想

(计算向数据移动)

7. TaskTracker会在当前节点上开启一个JVM子进程执行MapTask或者ReduceTask,每执行完一个MapTask或者ReduceTask就会关闭这个JVM子进程;如果当前节点有多个MapTask,那么每执行一个MapTask都会开启一个JVM子进程

你可能感兴趣的:(mr)