2011-08-29 55 views
0

我是Hadoop和HDFS的新手,所以也許這是我從本地(Ubuntu 10.04)複製到localhost上的單個節點上的HDFS時出錯的問題。初始複製工作正常,但是當我修改我的本地輸入文件夾並嘗試複製回HDFS時,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相同的副本,但這次它拷貝到不同的位置比第一次(/用戶/ hduser/anagram到/ 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 

有誰知道如何做到這一點,而不必每次都刪除目錄?

回答

2

在我看來,這是副作用(檢查FileUtil.java,靜態方法FileUtil.checkDest(字符串源名,文件系統dstFS,路徑DST,布爾覆蓋)) 試試這個:

hadoop dfs -copyFromLocal /tmp/anagram/*.TXT /user/hduser/anagram 

用於更新目錄。

+0

工作就像一個魅力。收到「Target /user/hduser/anagram/SINGLE.TXT已存在」的消息,並且未創建新的嵌套目錄 –

相關問題