我的理解是否正确,作业跟踪器在datanode上启动任务(mapper/reducer),其中存储inputsplit并在该数据上运行该任务,mapper将其中间输出存储在其本地存储中?
所以我的问题是:作为mapper在datanode上运行,所以它在datanode的RAM上存储它的中间数据?由于datanode磁盘是hdfs的一部分,中间输出不存储在hdfs..
Mapper的输出(中间数据)存储在每个Mapper数据节点的Local文件系统(而不是HDFS)中。这通常是一个临时目录,可以由Hadoop管理员在配置中设置。一旦Mapper作业完成或数据传输到Reducer,这些中间数据将被清理,并且不再可访问。
Map任务最初将其输出存储在datanode的缓冲区中。
一旦缓冲区被填充到其容量的80%,它就开始在datanode本身(而不是HDFS)的磁盘上写。这个磁盘位置可以在Hadoop 2.0的mapred-site.xml属性名称-
下查看/修改。mapreduce.cluster.local.dir