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