MapReduce详解

1.执行MR的命令。

hadoop  jar

<参数>

例子:

         hadoop     jar    /root/wc1.jar cn.itcast.d3.hadoop.mr.WordCount   hdfs://itcast:9000/words/out2

2.MR执行流程

      (1).客户端提交一个mr的jar包给JobClient(提交方式:hadoop jar ...)

         (2).JobClient通过RPC和JobTracker进行通信,返回一个存放jar包的地址(HDFS)和jobId

         (3).client将jar包写入到HDFS当中(path = hdfs上的地址+ jobId)

         (4).开始提交任务(任务的描述信息,不是jar, 包括jobid,jar存放的位置,配置信息等等)

         (5).JobTracker进行初始化任务

         (6).读取HDFS上的要处理的文件,开始计算输入分片,每一个分片对应一个MapperTask

         (7).TaskTracker通过心跳机制领取任务(任务的描述信息)

         (8).下载所需的jar,配置文件等

         (9).TaskTracker启动一个java child子进程,用来执行具体的任务(MapperTask或ReducerTask)

         (10).将结果写入到HDFS当中


2.MapReduce的工作原理

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

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

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

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

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

2.reduce任务处理

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

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

2.3 把reduce的输出保存到文件中。


MapReduce详解_第1张图片

你可能感兴趣的:(MapReduce详解)