Hadoop 对MapReduce的理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop 对MapReduce的理解相关的知识,希望对你有一定的参考价值。

  • 对MapReduce的理解
    1. 客户端启动一个作业
    2. 向JobTraker请求一个JobId
    3. 将资源文件复制到HDFS上,包括Jar文件,配置文件,输入划分信息等
    4. 接收作业后,进入作业队列,根据输入划分信息为每个划分创建一个map任务,并将map任务分配给TaskTracker来执行(运算移动,数据不移动)分配Reduce任务时,不考虑数据本地化
    5. TaskTracker每隔一段时间向JobTracker发送一个心跳, 告诉JobTracker它仍在运行,同时心跳中还带有很多信息,比如任务进度

 

  • Map端
    1. 输入分片(默认64M)进入Map,输出则暂且放到缓存中,缓冲区快要溢出时,会在本地创建一个溢出文件
    2. Partition(hash)和分区的内部排序,每个分区对应一个reduce任务
    3. 合并这些溢出文件
      • 减少每次写入磁盘的数据量
      • 减少下一阶段网络传输的数据量
    4. 将分区中的数据拷贝给reduce任务(map-TaskTracker-JobTracker)

 

  • Reduce端
    1. 接收到每个map传输来的有效数据(有序),超过了缓冲区,就写入到磁盘中
    2. 将溢出文件不断合并成一个更大的有序文件
    3. 最后一次合并的数据,不输出到磁盘,直接输出到reduce函数中

以上是关于Hadoop 对MapReduce的理解的主要内容,如果未能解决你的问题,请参考以下文章

使用 mapred 或 mapreduce 包创建 Hadoop 作业哪个更好?

hadoop.mapred vs hadoop.mapreduce?

Hadoop之MapReduce命令

解决 mapreduce.Cluster 无法使用 org.apache.hadoop.mapred.YarnClientProtocolProvider 由于实例化 YarnClient 错误

hadoop中MapReduce配置

Hadoop之 - 剖析 MapReduce 作业的运行机制(MapReduce 2)