微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

hadoop入门(14):MapReduce

Map阶段执行过程

  • 第一阶段:
    把输入目录下的文件按照一定标准逐个进行逻辑切片,形成切片规划。
    认切片大小和块的大小相同128M,一个切片由一个MapTask处理

  • 第二阶段:
    对切片数据按照一定规则读取解析返回<key,value>对。
    按行读取数据。key是每一行起始位置的偏移量,value是本行的文本内容

  • 第三阶段:
    调用Mapper类中的map方法每读取出一个<key,value>对,调用一次map方法

  • 第四阶段:
    按照一定规则对Map输出的键值对进行分区partition
    认不分区,因为只有一个reducetask,分区的数量就是reducetask运行的数量

  • 第五阶段:
    Map输出数据写入内存缓存区,达到比例溢出到磁盘上。溢出spill的时候对键key进行排序sort认根据key字典序排序。

  • 第六阶段:
    对所有的溢出文件进行最终的merge合并,成为一个文件




Reduce阶段执行过程

  • 第一阶段:
    ReduceTask会主动复制拉取属于自己要处理的数据。

  • 第二阶段:
    把拉取的数据,全部进行合并merge,即把分散的数据合并成一个大的数据。再对合并后的数据进行排序。

  • 第三阶段:
    对排序后的键值对调用reduce方法键相等的键值对调用一次reduce方法。最后把这些输出的键值对写入HDFS文件中。




Shuffle洗牌机制

在MapReduce中Shuffle并不是将数据洗乱,而是将数据整理成有一定规则的数据,方便reduce端接收。

shuffle这个过程在 Map产生输出数据开始到Reduce取得数据作为输出之前 这个阶段。

shuffle频繁的涉及到内存磁盘之间的反复,这就是MapReduce相比SparkFlink计算慢的原因。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐