本文介绍了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.mb
、mapreduce.map.sort.spill.percent
,对于Map,可以配置)。
最后,D是错误的,因为问题要求提供映射器的map方法的中间数据。此外,没有必要指定"在HDFS之外",因为在Hadoop上下文中,本地文件系统始终被理解为非HDFS。
所以,正确答案是C。
这篇关于MapReduce中间数据输出位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!