Hadoop大象之旅009-通過Shell操作hdfs

Hadoop大象之旅009-通過Shell操作hdfs

                                                               老帥

調用Hadoop分佈式文件系統(HDFS)Shell命令應使用bin/hadoop fs <args>的形式。

 

1.查看hdfs都有哪些Shell命令

參照前面章節中所述方法,使用SecureCRTPortable.exe登錄CentOS;

使用命令hadoopfs查看hdfs的命令列表,如下圖所示:


hdfs的所有命令的格式,都爲:hadoop fs –xx,具體使用方法,可參考官方文檔:

http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html

全部命令清單如下

cat

使用方法:hadoop fs -cat URI [URI …]

將路徑指定文件的內容輸出到stdout

示例:

·         hadoop fs -cat hdfs://host1:port1/file1 hdfs://host2:port2/file2

·         hadoop fs -cat file:///file3 /user/hadoop/file4

返回值:
成功返回0,失敗返回-1

chgrp

使用方法:hadoop fs -chgrp [-R] GROUP URI [URI …] Change group association of files. With -R, make the change recursively through the directory structure. The user must be the owner of files, or else a super-user. Additional information is in the Permissions User Guide. -->

改變文件所屬的組。使用-R將使改變在目錄結構下遞歸進行。命令的使用者必須是文件的所有者或者超級用戶。更多的信息請參見HDFS權限用戶指南

chmod

使用方法:hadoop fs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI …]

改變文件的權限。使用-R將使改變在目錄結構下遞歸進行。命令的使用者必須是文件的所有者或者超級用戶。更多的信息請參見HDFS權限用戶指南

chown

使用方法:hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]

改變文件的擁有者。使用-R將使改變在目錄結構下遞歸進行。命令的使用者必須是超級用戶。更多的信息請參見HDFS權限用戶指南

copyFromLocal

使用方法:hadoop fs -copyFromLocal <localsrc> URI

除了限定源路徑是一個本地文件外,和put命令相似。

copyToLocal

使用方法:hadoop fs -copyToLocal [-ignorecrc] [-crc] URI <localdst>

除了限定目標路徑是一個本地文件外,和get命令類似。

cp

使用方法:hadoop fs -cp URI [URI …] <dest>

將文件從源路徑複製到目標路徑。這個命令允許有多個源路徑,此時目標路徑必須是一個目錄。 
示例:

·         hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2

·         hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir

返回值:

成功返回0,失敗返回-1

du

使用方法:hadoop fs -du URI [URI …]

顯示目錄中所有文件的大小,或者當只指定一個文件時,顯示此文件的大小。
示例:
hadoop fs -du /user/hadoop/dir1 /user/hadoop/file1 hdfs://host:port/user/hadoop/dir1 
返回值:
成功返回0,失敗返回-1 

dus

使用方法:hadoop fs -dus <args>

顯示文件的大小。

expunge

使用方法:hadoop fs -expunge

清空回收站。請參考HDFS設計文檔以獲取更多關於回收站特性的信息。

get

使用方法:hadoop fs -get [-ignorecrc] [-crc] <src> <localdst> 

複製文件到本地文件系統。可用-ignorecrc選項複製CRC校驗失敗的文件。使用-crc選項複製文件以及CRC信息。

示例:

·         hadoop fs -get /user/hadoop/file localfile

·         hadoop fs -get hdfs://host:port/user/hadoop/file localfile

返回值:

成功返回0,失敗返回-1

getmerge

使用方法:hadoop fs -getmerge <src> <localdst> [addnl]

接受一個源目錄和一個目標文件作爲輸入,並且將源目錄中所有的文件連接成本地目標文件。addnl是可選的,用於指定在每個文件結尾添加一個換行符。

ls

使用方法:hadoop fs -ls <args>

如果是文件,則按照如下格式返回文件信息:
文件名 <副本數> 文件大小修改日期修改時間權限用戶ID ID 
如果是目錄,則返回它直接子文件的一個列表,就像在Unix中一樣。目錄返回列表的信息如下:
目錄名 <dir> 修改日期修改時間權限用戶ID ID 
示例:
hadoop fs -ls /user/hadoop/file1 /user/hadoop/file2 hdfs://host:port/user/hadoop/dir1 /nonexistentfile 
返回值:
成功返回0,失敗返回-1 

lsr

使用方法:hadoop fs -lsr <args> 
ls命令的遞歸版本。類似於Unix中的ls -R

mkdir

使用方法:hadoop fs -mkdir <paths> 

接受路徑指定的uri作爲參數,創建這些目錄。其行爲類似於Unixmkdir -p,它會創建路徑中的各級父目錄。

示例:

·         hadoop fs -mkdir /user/hadoop/dir1 /user/hadoop/dir2

·         hadoop fs -mkdir hdfs://host1:port1/user/hadoop/dir hdfs://host2:port2/user/hadoop/dir

返回值:

成功返回0,失敗返回-1

movefromLocal

使用方法:dfs -moveFromLocal <src> <dst>

輸出一個”not implemented“信息。

mv

使用方法:hadoop fs -mv URI [URI …] <dest>

將文件從源路徑移動到目標路徑。這個命令允許有多個源路徑,此時目標路徑必須是一個目錄。不允許在不同的文件系統間移動文件。 
示例:

·         hadoop fs -mv /user/hadoop/file1 /user/hadoop/file2

·         hadoop fs -mv hdfs://host:port/file1 hdfs://host:port/file2 hdfs://host:port/file3 hdfs://host:port/dir1

返回值:

成功返回0,失敗返回-1

put

使用方法:hadoop fs -put <localsrc> ... <dst>

從本地文件系統中複製單個或多個源路徑到目標文件系統。也支持從標準輸入中讀取輸入寫入目標文件系統。

·         hadoop fs -put localfile /user/hadoop/hadoopfile

·         hadoop fs -put localfile1 localfile2 /user/hadoop/hadoopdir

·         hadoop fs -put localfile hdfs://host:port/hadoop/hadoopfile

·         hadoop fs -put - hdfs://host:port/hadoop/hadoopfile 
從標準輸入中讀取輸入。

返回值:

成功返回0,失敗返回-1

rm

使用方法:hadoop fs -rm URI [URI …]

刪除指定的文件。只刪除非空目錄和文件。請參考rmr命令瞭解遞歸刪除。
示例:

·         hadoop fs -rm hdfs://host:port/file /user/hadoop/emptydir

返回值:

成功返回0,失敗返回-1

rmr

使用方法:hadoop fs -rmr URI [URI …]

delete的遞歸版本。
示例:

·         hadoop fs -rmr /user/hadoop/dir

·         hadoop fs -rmr hdfs://host:port/user/hadoop/dir

返回值:

成功返回0,失敗返回-1

setrep

使用方法:hadoop fs -setrep [-R] <path>

改變一個文件的副本系數。-R選項用於遞歸改變目錄下所有文件的副本系數。

示例:

·         hadoop fs -setrep -w 3 -R /user/hadoop/dir1

返回值:

成功返回0,失敗返回-1

stat

使用方法:hadoop fs -stat URI [URI …]

返回指定路徑的統計信息。

示例:

·         hadoop fs -stat path

返回值:
成功返回0,失敗返回-1

tail

使用方法:hadoop fs -tail [-f] URI

將文件尾部1K字節的內容輸出到stdout。支持-f選項,行爲和Unix中一致。

示例:

·         hadoop fs -tail pathname

返回值:
成功返回0,失敗返回-1

test

使用方法:hadoop fs -test -[ezd] URI

選項:
-e
檢查文件是否存在。如果存在則返回0
-z
檢查文件是否是0字節。如果是則返回0 
-d
如果路徑是個目錄,則返回1,否則返回0

示例:

·         hadoop fs -test -e filename

text

使用方法:hadoop fs -text <src> 

將源文件輸出爲文本格式。允許的格式是zipTextRecordInputStream

touchz

使用方法:hadoop fs -touchz URI [URI …] 

創建一個0字節的空文件。

示例:

·         hadoop -touchz pathname

返回值:
成功返回0,失敗返回-1

 

2.查看hdfs根目錄下都有哪些文件

使用命令hadoopfs –lsr /”遞歸查看hdfs根目錄下的所有文件夾和文件列表,如下圖所示:


第一個字符:如果實d開頭的表示文件夾,-開頭的表示文件

再後面的10個字符是權限控制

再後面表示副本數量,文件夾用-表示,因爲文件夾沒有副本

再後面的root是創建者

再後面表示該文件屬於哪個用戶組

再後面的是文件大小,如果是文件夾則沒有大小

注意:hdfs管理的文件,在linux下是看不到的。

 

3.hdfs根目錄下創建一個文件夾

使用命令hadoopfs –mkdir /test查創建一個文件夾,如下圖所示:


 

4.上傳文件到hdfs

我們將linux系統/root目錄下的一個68Mbig.bin文件上傳到hdfstest文件夾中;

先看一下linux下的這個文件,如下圖所示:


執行上傳命令hadoopfs -put /root/big.bin /test”,並查看結果如下圖所示:


如果文件在hdfs中已經存在,會提示錯誤信息,如下圖所示:


如果實在想上傳,可以改個名字:hadoopfs -put /root/big.bin /test/big1.bin

 

5.默認文件夾與默認文件名

hdfs中所有用戶的默認文件夾都是/user/<currentUser>/

如我們執行命令hadoopfs –ls”,出現如下提示:


這是因爲當前用戶是root,而在hdfs文件系統的/user/文件夾下沒有/user/root/文件夾

如我們先執行命令hadoopfs –mkdir /user/root”,然後再執行命令hadoopfs –ls”就正常了,如下圖所示:


不過此時/user/root目錄下是空的,所以看不到文件。

如使用命令hadoopfs –put little.txt abc


注意:如果不指定hdfs目錄,則默認爲/user/<currentUser>/路徑

      如果指定的路徑abc文件夾不存在,那麼abc默認作爲文件名使用,將把little.text上傳到默認路徑下,並且名字爲abc

 

6.訪問指定的hdfs服務器

使用命令hadoopfs –ls hdfs://hadoop001:9000/可以訪問指定的hdfs文件系統,如果訪問本機,用/即可代替根目錄。


使用命令morecore-site.xml查看配置文件,如下圖所示:


可以看到hdfs的默認名稱設置爲hdfs://hadoop001:9000

 

7.區分htfslinux中的根目錄和hdfs自己的虛擬根目錄

使用命令cd$HADOOP_HOME訪問htfslinux上的根目錄


使用命令hadoopfs –ls /”訪問hdfs系統的虛擬根目錄


 

 

發佈了405 篇原創文章 · 獲贊 134 · 訪問量 298萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章