Hadoop中创建的HDFS目录在哪里?

时间:2017-01-23 13:49:00

标签: java hdfs hadoop2

我正在以伪分布式模式运行一个简单的,get-my-feet-wet,map reduce作业:

bin/hadoop jar tm.jar TestMap input output

第一次运行正常,但在第二次运行时,我得到以下内容:

Exception in thread "main" org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/user/tom/output already exists

创建HDFS目录的初始命令使用hadoop命令:

 $ bin/hdfs dfs -mkdir /user
 $ bin/hdfs dfs -mkdir /user/<username>

几个问题:

  • 这些HDFS目录在哪里创建,如果已经存在,可以将其删除吗?
  • 避免这种情况的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

运行MR作业时,预计ouput目录不存在。

作业的第一次运行创建了它并且具有相同输出路径的作业的重新尝试导致了此异常。

从您的帖子中,output目录作为相对路径提供,在这种情况下,目录将在用户的HDFS目录(/user/username/output)内创建。

是的,如果它们已经存在且您不再需要它们,则可以删除它们。

hdfs dfs -rm -R output

为避免这种情况,您可以删除目录并提交作业,也可以提供不同的不存在路径作为作业的输出。

注意:例如,如果提供的输出路径为new/mapreduce/output,则Hadoop期望父new/mapreduce/存在。