在 Hadoop 中创建的 HDFS 目录在哪里?
Where are HDFS directories created in Hadoop?
我正在 运行 做一个简单的 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 目录是在哪里创建的?如果已经存在,可以删除吗?
- 避免这种情况的最佳做法是什么?
当 运行 运行 MR 作业时,它期望 ouput
目录为 non-existent。
作业的第一个 运行 创建了它,而具有相同输出路径的作业的 re-attempt 导致了此异常。
并且从您的 post 中,output
目录作为相对路径提供,在这种情况下,该目录将在用户的 HDFS 目录 (/user/username/output
) 中创建。
是的,如果它们已经存在并且您不再需要它们,您可以删除它们。
hdfs dfs -rm -R output
为避免这种情况,您可以删除该目录并提交作业,或者提供不同的 non-existent 路径作为作业的输出。
注意: 例如,如果提供的输出路径是 new/mapreduce/output
,Hadoop 期望父 new/mapreduce/
存在。
我正在 运行 做一个简单的 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 目录是在哪里创建的?如果已经存在,可以删除吗?
- 避免这种情况的最佳做法是什么?
当 运行 运行 MR 作业时,它期望 ouput
目录为 non-existent。
作业的第一个 运行 创建了它,而具有相同输出路径的作业的 re-attempt 导致了此异常。
并且从您的 post 中,output
目录作为相对路径提供,在这种情况下,该目录将在用户的 HDFS 目录 (/user/username/output
) 中创建。
是的,如果它们已经存在并且您不再需要它们,您可以删除它们。
hdfs dfs -rm -R output
为避免这种情况,您可以删除该目录并提交作业,或者提供不同的 non-existent 路径作为作业的输出。
注意: 例如,如果提供的输出路径是 new/mapreduce/output
,Hadoop 期望父 new/mapreduce/
存在。