我正在尝试 Hadoop 1.0。我在将一个文件从本地系统复制到 HDFS 时收到 Target does not exists
。
我的 hadoop 命令及其输出如下:
shekhar@ubuntu:/host/Shekhar/Softwares/hadoop-1.0.0/bin$ hadoop dfs -put /host/Users/Shekhar/Desktop/Downloads/201112/20111201.txt .
Warning: $HADOOP_HOME is deprecated.
put: Target already exists
观察输出后,我们可以看到单词'Target'和'already'之间有两个空格。我认为这两个词之间必须有类似 /user/${user}
的东西。如果我将目标路径显式指定为 /user/shekhar
,则会出现以下错误:
shekhar@ubuntu:/host/Shekhar/Softwares/hadoop-1.0.0/bin$ hadoop dfs -put /host/Users/Shekhar/Desktop/Downloads/201112/20111201.txt /user/shekhar/data.txt
Warning: $HADOOP_HOME is deprecated.
put: java.io.FileNotFoundException: Parent path is not a directory: /user/shekhar
ls
命令的输出如下:
shekhar@ubuntu:/host/Shekhar/Softwares/hadoop-1.0.0/bin$ hadoop dfs -lsr /
Warning: $HADOOP_HOME is deprecated.
drwxr-xr-x - shekhar supergroup 0 2012-02-21 19:56 /tmp
drwxr-xr-x - shekhar supergroup 0 2012-02-21 19:56 /tmp/hadoop-shekhar
drwxr-xr-x - shekhar supergroup 0 2012-02-21 19:56 /tmp/hadoop-shekhar/mapred
drwx------ - shekhar supergroup 0 2012-02-21 19:56 /tmp/hadoop-shekhar/mapred/system
-rw------- 1 shekhar supergroup 4 2012-02-21 19:56 /tmp/hadoop-shekhar/mapred/system/jobtracker.info
drwxr-xr-x - shekhar supergroup 0 2012-02-21 19:56 /user
-rw-r--r-- 1 shekhar supergroup 6541526 2012-02-21 19:56 /user/shekhar
请帮助我将文件复制到 HDFS。如果您需要任何其他信息,请告诉我。
我正在使用 WUBI(适用于 ubuntu 的 Windows 安装程序)安装的 Ubuntu 中尝试此操作。
提前致谢!
最佳答案
put 命令中的问题是尾随 .
。您需要在 HDFS 上指定文件的完整路径,例如:
hadoop fs -put/host/Users/Shekhar/Desktop/Downloads/201112/20111201.txt/whatever/20111201.txt
如果你放置文件的目录还不存在,你需要先创建它:
hadoop fs -mkdir/whatever
当您明确指定路径时遇到的问题是,在您的系统上,/user/shekar 是一个文件,而不是一个目录。您可以看到这一点,因为它的大小不为 0。
关于hadoop - hadoop put命令中的目标已经存在错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9379650/