我在 SLES 10 (SUSE) 下运行 Hadoop 0.20.1。
我的 Map 任务需要一个文件并生成更多文件,然后我从这些文件中生成我的结果。我想知道我应该把这些文件放在哪里,这样性能好并且没有冲突。如果 Hadoop 可以自动删除该目录,那就太好了。
现在,我正在使用临时文件夹和任务 ID 创建一个唯一文件夹,然后在该文件夹的子文件夹中工作。
reduceTaskId = job.get("mapred.task.id");
reduceTempDir = job.get("mapred.temp.dir");
String myTemporaryFoldername = reduceTempDir+File.separator+reduceTaskId+ File.separator;
File diseaseParent = new File(myTemporaryFoldername+File.separator +REDUCE_WORK_FOLDER);
这种方法的问题是我不确定它是最佳的,而且我必须删除每个新文件夹,否则我开始用完空间。谢谢阿金塔约
(编辑)我发现保存文件的最佳位置是job.get("job.local.dir"),它提供了一个在地图任务完成时将被删除的路径. 我不确定删除是基于每个键还是针对每个任务跟踪器完成的。