HDFS(Hadoop Distributed File System)是Hadoop應用用到的一個最主要的分佈式存儲系統。一個HDFS集羣主要由一個NameNode和多個Datanode組成:Namenode管理文件系統的元數據,而Datanode存儲了實際的數據。基本上,客戶端是通過聯繫Namenode以獲取文件的元數據或修飾屬性,而真正的文件I/O操作是Namenode直接和Datanode進行交互的。
調用文件系統命令應使用bin/hadoop fs <args>的形式。所有的FS shell命令使用URI路徑作爲參數。URI格式是scheme://authority/path。對HDFS文件系統,scheme是hdfs,對本地文件系統,scheme是file。其中scheme和authority參數都是可選的,如果未加指定,就會使用配置中指定的默認scheme(見core-site.xml配置文件的fs.default.name屬性)。一個HDFS文件或目錄比如/user/myuser可以表示成hdfs://namenode:namenodeport/user/myuser,或者更簡單的/user/myuser(假設你配置文件中的默認值是namenode:namenodeport)。接下來從查詢類、新增類、刪除類及修改類四個角度來列舉HDFS命令。
1 查詢類
1.1 查看指定目錄下內容
hadoop dfs –ls /user/myuser
1.2 lsr
hadoop fs -lsr <args>
ls命令的遞歸版本。
1.3 打開某個已存在文件
hadoop fs -cat URI [URI ...]
hadoop dfs -cat /user/myuser/data.txt file:///file hdfs://host:port/user/myuser
1.4 將hadoop上某個文件down至本地已有目錄下
hadoop fs –get /user/test/bqh/in.txt /home/test/
1.5 將hadoop指定目錄下所有內容保存爲一個文件,同時down至本地
hadoop dfs –getmerge /user /home/t
1.6 copyToLocal
hadoop fs -copyToLocal URI <localdst>
除了限定目標路徑是一個本地文件外,和get命令類似
1.7 du
hadoop fs -du URI [URI ...]
顯示目錄中所有文件的大小,或者當只指定一個文件時,顯示此文件的大小。
1.8 dus
hadoop fs -dus <args>
顯示文件的大小。
1.9 stat
hadoop fs -stat URI [URI ...]
返回指定路徑的統計信息。
1.10 tail
hadoop fs -tail URI
將文件尾部的內容輸出到stdout。
1.11 test
hadoop fs -test -[ezd] URI
-e 檢查文件是否存在。如果存在則返回0。
-z 檢查文件是否是0字節。如果是則返回0.
-d 檢查路徑是個目錄,則返回1,否則返回0.
1.12 text
hadoop fs -text <src>
將源文件輸出爲文本格式。
2 新增類
2.1 mkdir
hadoop fs -mkdir <paths>
接受路徑指定的URI作爲參數,創建這些目錄。類似於Unix的mkdir -p,它會創建路徑中的各級父目錄。
2.2 將本地文件存儲至hadoop
hadoop fs –put /home/myuser/file.txt /user/t
2.3 將本地文件夾存儲至hadoop
hadoop fs –put /home/t/dir_name /user/t
2.4 在hadoop指定目錄內創建新目錄
hadoop fs –mkdir /user/myuser/t
2.5 在hadoop指定目錄下新建一個空文件
hadoop fs -touchz /user/myuser/new.txt
2.6 copyFromLocal
hadoop fs -copyFromLocal <localsrc> URI除了限定資源路徑是一個本地文件外,和put命令相似。
2.7 moveFromLocal
hadoop dfs -moveFromLocal <src> <dsr>
3 刪除類
3.1 刪除hadoop上指定文件
hadoop fs –rm /user/myuser/ok.txt
hadoop fs –rmr /user/myuser/ok.txt
3.2 刪除hadoop上指定文件夾(包含子目錄等)
hadoop fs –rmr /user/myuser/t
3.3 Expunge
hadoop fs -expunge
清空回收站
4 修改類
4.1 將hadoop上某個文件重命名
hadoop fs –mv /user/test.txt /user/ok.txt
4.2 改變文件必屬的組。
hadoop fs -chgrp [-R] GROUP [URI ...]
使用-R將使改變在目錄結構下遞歸進行。
4.3 改變文件的權限
hadoop fs -chmod [-R] <MODE[,MODE]> URI [URI ...]
使用-R將使改變在目錄結構下遞歸進行。
4.4 改變文件的擁有者
hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI]
使用-R將使改變在目錄結構下遞歸進行。
4.5 cp
hadoop fs -cp URI [URI ...] <dest>
將文件從源路徑複製到目標路徑。這個命令允許有多個源路徑,此時目標路徑必須是一個目錄。