我是Hadoop和HDFS的新手,所以当我从本地(Ubuntu 10.04)复制到localhost上的单个节点上的HDFS时,可能是我做错了。初始副本工作正常,但是当我修改本地输入文件夹并尝试复制回HDFS时,HDFS路径会发生变化。
~$ $HADOOP_HOME/bin/hadoop dfs -copyFromLocal /tmp/anagram /user/hduser/anagram
~$ $HADOOP_HOME/bin/hadoop dfs -ls /user/hduser/anagram
Found 1 items
-rw-r--r-- 1 hduser supergroup 4067675 2011-08-29 05:44 /user/hduser/anagram/SINGLE.TXT
将另一个文件(COMMON.TXT)添加到同一本地目录后,我在本地目录上运行相同的副本到HDFS,但这次它复制到不同于第一次的位置(/ user / hduser / anagram) to / user / hduser / anagram / anagram)。
~$ $HADOOP_HOME/bin/hadoop dfs -copyFromLocal /tmp/anagram /user/hduser/anagram
~$ $HADOOP_HOME/bin/hadoop dfs -ls /user/hduser/anagram
Found 2 items
-rw-r--r-- 1 hduser supergroup 4067675 2011-08-29 05:44 /user/hduser/anagram/SINGLE.TXT
drwxr-xr-x - hduser supergroup 0 2011-08-29 05:48 /user/hduser/anagram/anagram
~$ $HADOOP_HOME/bin/hadoop dfs -ls /user/hduser/anagram/anagram
Found 2 items
-rw-r--r-- 1 hduser supergroup 805232 2011-08-29 05:48 /user/hduser/anagram/anagram/COMMON.TXT
-rw-r--r-- 1 hduser supergroup 4067675 2011-08-29 05:48 /user/hduser/anagram/anagram/SINGLE.TXT
有没有人碰到这个?我发现要解决此问题,您需要删除第一个目录,然后再次复制:
~$ $HADOOP_HOME/bin/hadoop dfs -rmr /user/hduser/anagram/anagram
Deleted hdfs://localhost:54310/user/hduser/anagram/anagram
~$ $HADOOP_HOME/bin/hadoop dfs -rmr /user/hduser/anagram
Deleted hdfs://localhost:54310/user/hduser/anagram
~$ $HADOOP_HOME/bin/hadoop dfs -copyFromLocal /tmp/anagram /user/hduser/anagram
~$ $HADOOP_HOME/bin/hadoop dfs -ls /user/hduser/anagram
Found 2 items
-rw-r--r-- 1 hduser supergroup 805232 2011-08-29 05:55 /user/hduser/anagram/COMMON.TXT
-rw-r--r-- 1 hduser supergroup 4067675 2011-08-29 05:55 /user/hduser/anagram/SINGLE.TXT
有没有人知道怎么做而不必每次都删除目录?
答案 0 :(得分:2)
在我看来,这是副作用(检查FileUtil.java,静态方法FileUtil.checkDest(String srcName,FileSystem dstFS,Path dst,boolean overwrite)) 试试这个:
hadoop dfs -copyFromLocal /tmp/anagram/*.TXT /user/hduser/anagram
用于更新目录。