【发布时间】:2014-09-23 14:39:30
【问题描述】:
当一个 map-reduce 作业运行时,它必须创建大量的临时文件来存储各种 mapper 和 reducer 的结果。那些临时文件是写入hdfs的吗?
如果是,namenode 的编辑日志可能会在短时间内变得巨大,因为它记录了文件打开、关闭等每一个事务。可以通过直接写入本机文件系统而不是 hdfs 来避免这种情况吗?想法?
【问题讨论】:
当一个 map-reduce 作业运行时,它必须创建大量的临时文件来存储各种 mapper 和 reducer 的结果。那些临时文件是写入hdfs的吗?
如果是,namenode 的编辑日志可能会在短时间内变得巨大,因为它记录了文件打开、关闭等每一个事务。可以通过直接写入本机文件系统而不是 hdfs 来避免这种情况吗?想法?
【问题讨论】:
map reduce 代码的中间结果已写入本地文件系统而不是 hdfs,并在作业完成后自动将其删除。
我的意思是说映射器的输出已经写入本地文件系统,可以配置特定位置,但默认情况下它写入 /tmp/hadoop-username* 位置
【讨论】:
您的意思是,每次 Mapper 运行时都会创建临时文件。 如果是,那么您将无法避免这种情况,因为 Mapper 的输出被写入磁盘而不是内存。 TaskTracker 将负责为 MR 作业创建设置并为 Mapper 中间输出创建临时磁盘空间。一旦 MR 作业完成,TaskTracker 也会清理临时空间。
这是 MR 编程范式的瓶颈之一。
任何 cmets/反馈将不胜感激。
【讨论】: