MapReduce中间数据输出位置

时间:2015-02-19 06:38:14

标签: hadoop mapreduce

您刚刚执行了MapReduce作业。从Mapper的map方法发出后写入的中间数据在哪里?

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

3 个答案:

答案 0 :(得分:2)

TaskTracker是一个负责产生地图和减少工作人员的恶魔,它通常驻留在datanode上。映射和减少作业在缓冲区中运行,直到达到某个阈值;此时,记录将在后台写入磁盘(请参阅Hadoop的MapReduce教程中的Memory Management)。达到阈值容量后写入磁盘的过程也称为溢出到磁盘。阈值由参数(例如mapreduce.task.io.sort.mbmapreduce.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”