2016-04-02 51 views
1

如何在我的系統上找到Hadoop HDFS目錄? 我需要這個下面的命令來運行 -如何在我的系統上找到Hadoop hdfs目錄?

hadoop dfs -copyFromLocal <local-dir> <hdfs-dir> 

在此命令,我不knon我的HDFS-DIR。

不知道它有幫助或沒有,但我跑以下命令得到這個輸出 -

hdfs dfs -ls 
-rw-r--r-- 3 popeye hdfs 127162942 2016-04-01 19:47 . 

在HDFS中-site.xml中,我發現下面的條目 -

<property> 
     <name>dfs.datanode.data.dir</name> 
     <value>/hadoop/hdfs/data</value> 
     <final>true</final> 
</property> 

我試着運行下面的命令,但它會給出錯誤 -

[[email protected] try]# hdfs dfs -copyFromLocal 1987.csv /hadoop/hdfs/data 
copyFromLocal: `/hadoop/hdfs/data': No such file or directory 

僅供參考 - 我在hortonworks沙箱上做所有這些天藍色的服務器。

回答

5

你的做法是錯誤的,也可以理解是錯誤的

dfs.datanode.data.dir,在這裏你要存儲的數據塊

如果鍵入hdfs dfs -ls /,你會在HDFS得到的目錄列表。然後你可以從本地使用-copyFromLocal-put特定的目錄,或使用-mkdir傳輸文件到HDFS如果你運行,你可以創建新的目錄

請參考以下鏈接瞭解更多信息

http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html

+0

你是說我應該嘗試複製popeye目錄中的文件? –

+0

我使用「hdfs dfs -ls /」命令,我能夠將文件複製到此命令列出的目錄中。 –

0

hdfs dfs -copyFromLocal foo.txt bar.txt 

然後將本地文件foo.txt複製到您自己的hdfs目錄/user/popeye/bar.txt(其中popeye是你的用戶名),其結果是,以下實現相同的:

hdfs dfs -copyFromLocal foo.txt /user/popeye/bar.txt 

之前複製任何文件到HDFS,只是某些先創建父目錄。您不必將文件放在這個「home」目錄中,但是(1)最好不要將「/」與各種文件混淆,並且(2)遵循這個約定將有助於防止與其他用戶發生衝突。

1

按照第一個答案,我闡述其在具體的Hadoop 1.x -

假設你正在運行僞分佈模型這個腳本,你可能會得到用戶的一個或兩個列表所示(NameNodes) -

在我們的完全分佈模型中,首先您擁有管理員權限來執行這些操作,並且會有N個NameNode(用戶)列表。

所以現在我們進入到我們的觀點 -

首先觸及你的Hadoop的主目錄,並從那裏運行此腳本 -

bin/hadoop fs -ls/

結果會這樣 -

drwxr-xr-x - xuiob78126arif supergroup   0 2017-11-30 11:20 /user 

所以這裏xuiob78126arif是我的名字節點(主/用戶)和NameNode(用戶)目錄是 -

/user/xuiob78126arif/ 

現在你可以去你的瀏覽器和搜索的地址 -

http://xuiob78126arif:50070 

,並從那裏你可以得到Cluster Summary, NameNode Storage

注:腳本將只在一個條件下提供結果,如果至少有任何文件或目錄在數據節點存在,否則你會得到 -

ls: Cannot access .: No such file or directory. 

因此,在這種情況下,你先放任何文件由bin/hadoop fs -put <source file full path>

並且之後運行bin/hadoop fs -ls /腳本。

現在我希望你已經對你的問題有點了解,謝謝。

相關問題