您刚刚执行了MapReduce作业。从Mapper的map方法发出后写入的中间数据在哪里?
答案 0 :(得分:2)
TaskTracker是一个负责产生地图和减少工作人员的恶魔,它通常驻留在datanode上。映射和减少作业在缓冲区中运行,直到达到某个阈值;此时,记录将在后台写入磁盘(请参阅Hadoop的MapReduce教程中的Memory Management)。达到阈值容量后写入磁盘的过程也称为溢出到磁盘。阈值由参数(例如mapreduce.task.io.sort.mb
,mapreduce.map.sort.spill.percent
为Map提供,可以配置)。
答案A已关闭,因为中间数据可能会写入磁盘。
可以排除答案B和E,因为溢出的中间数据不会写入HDFS,而是写入本地文件系统。
最后,D是错误的,因为问题是要求Mapper的map方法的中间数据 。此外,没有必要指定“外部HDFS”,因为在Hadoop上下文本地文件系统始终被理解为非HDFS。
所以,正确答案是C.
答案 1 :(得分:0)
映射器输出(中间数据)存储在每个单独映射器节点的本地文件系统(非HDFS)上。这通常是一个临时目录位置,可以由hadoop管理员在配置中设置。在Hadoop作业完成后清理中间数据
我认为这是必须修改以更改中间数据位置的参数
mapreduce.cluster.local.dir
答案 2 :(得分:0)
映射器输出存储在tasktracker节点的本地文件系统(非HDFS)上。所以你的答案是选项“C”