本文介绍了MapReduce中间数据输出位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您刚刚执行了MapReduce作业。中间数据从映射器的map方法发出后写入何处?

  • A.中的中间数据通过网络从Mapper流式传输到Reduce,并且从不写入磁盘。
  • B.写入运行Mapper的TaskTracker节点上的内存缓冲区,该节点溢出并写入HDFS。
  • C.进入内存缓冲区,溢出到运行映射器的TaskTracker节点的本地文件系统。
  • D.内存缓冲区溢出到运行Reducer的TaskTracker节点的本地文件系统(HDFS之外)
  • E.到运行Reducer的TaskTracker节点上的内存缓冲区,该节点溢出并写入HDFS。

推荐答案

TaskTracker是负责生成Map和Reduce工作进程的恶魔,通常驻留在DataNode上。Map和Reduce作业在缓冲区中运行,直到达到某个阈值;此时,记录将在后台写入磁盘(请参阅Hadoop的MapReduce教程中的Memory Management)。达到阈值容量后写入磁盘的过程也称为溢出到磁盘。阈值由参数指定(例如,mapreduce.task.io.sort.mbmapreduce.map.sort.spill.percent,对于Map,可以配置)。

答案A为OFF,因为可能会将中间数据写入磁盘。

答案B和E可以排除,因为溢出的中间数据不会写入HDFS,而是写入本地文件系统。

最后,D是错误的,因为问题要求提供映射器的map方法的中间数据。此外,没有必要指定"在HDFS之外",因为在Hadoop上下文中,本地文件系统始终被理解为非HDFS。

所以,正确答案是C。

这篇关于MapReduce中间数据输出位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-16 11:27