当map reduce作业运行时,它必须创建大量临时文件,用于存储各种mapper和reducer的结果。那些临时文件是写入hdfs的吗。
如果是,namenode的editlog可能会在短时间内变得巨大,因为它记录了每个事务,如文件打开、关闭等。可以通过直接写入本地文件系统而不是hdfs来避免这种情况吗?这是个坏主意吗?
map reduce代码的中间结果已写入本地文件系统,而不是hdfs,并在作业完成后自动删除。
我的意思是说,映射器的输出已写入本地文件系统,可以配置特定的位置,但默认情况下,它会写入/tmp/hoop-username*location
您的意思是说,每次Mapper运行时都会创建临时文件。如果是,则无法避免这种情况,因为Mapper的输出被写入磁盘而不是内存。TaskTracker将负责为MR作业创建设置,并为Mapper中间输出创建临时磁盘空间。此外,一旦MR作业完成,TaskTracker将清理临时空间。
这是MR编程范式的瓶颈之一。
如有任何意见/反馈,我们将不胜感激。