【问题标题】:Where are HDFS directories created in Hadoop?在 Hadoop 中创建的 HDFS 目录在哪里?
【发布时间】:2017-01-23 22:04:27
【问题描述】:

我正在以伪分布式模式运行一个简单的、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 目录在哪里创建,如果已经存在,可以删除吗?
  • 避免这种情况的最佳做法是什么?

【问题讨论】:

  • hadoop fs -ls /user/tom/outputhdfs dfs -ls /user/tom/output

标签: java hdfs hadoop2


【解决方案1】:

在运行 MR 作业时,它会认为 ouput 目录不存在。

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

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

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

hdfs dfs -rm -R output

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

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

【讨论】:

  • 感谢 (+1) @franklinsijo 的明确解释
  • 很高兴它有帮助。
猜你喜欢
  • 1970-01-01
  • 2017-07-07
  • 2015-12-09
  • 2014-02-17
  • 2016-10-01
  • 1970-01-01
  • 2018-05-31
  • 2023-03-07
  • 2020-05-04
相关资源
最近更新 更多