天天看點

HDFS指令行用戶端使用,指令行用戶端支援的指令參數,常用指令參數介紹3.HDFS的shell(指令行用戶端)操作

hdfs提供shell指令行用戶端,使用方法如下:

[toto@hadoop hadoop-2.8.0]$ hdfs dfs -ls /     (推薦使用這種方式,hdfs現在這種是最新的一種方式)

found 4 items

drwxr-xr-x   - toto supergroup          0 2017-05-29 14:01 /findbugs-1.3.9

drwxr-xr-x   - toto supergroup          0 2017-05-29 03:23 /hive

drwx------   - toto supergroup          0 2017-05-29 14:47 /tmp

drwxr-xr-x   - toto supergroup          0 2017-05-29 14:47 /user

[toto@hadoop hadoop-2.8.0]$

或者使用:

[toto@hadoop hadoop-2.8.0]$ hadoop fs -ls /

drwxr-xr-x   - toto supergroup          0 2017-05-29 14:01 /findbugs-1.3.9

drwx------   - toto supergroup          0 2017-05-29 14:47 /tmp

[toto@hadoop learn]$ hadoop fs help

usage: hadoop fs [generic options]

       [-appendtofile <localsrc> ... <dst>]

       [-cat [-ignorecrc] <src> ...]

       [-checksum <src> ...]

       [-chgrp [-r] group path...]

       [-chmod [-r] <mode[,mode]... | octalmode> path...]

       [-chown [-r] [owner][:[group]] path...]

       [-copyfromlocal [-f] [-p] [-l] [-d] <localsrc> ... <dst>]

       [-copytolocal [-f] [-p] [-ignorecrc] [-crc] <src> ... <localdst>]

       [-count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] <path> ...]

       [-cp [-f] [-p | -p[topax]] [-d] <src> ... <dst>]

       [-createsnapshot <snapshotdir> [<snapshotname>]]

       [-deletesnapshot <snapshotdir> <snapshotname>]

       [-df [-h] [<path> ...]]

       [-du [-s] [-h] [-x] <path> ...]

       [-expunge]

       [-find <path> ... <expression> ...]

       [-get [-f] [-p] [-ignorecrc] [-crc] <src> ... <localdst>]

       [-getfacl [-r] <path>]

       [-getfattr [-r] {-n name | -d} [-e en] <path>]

       [-getmerge [-nl] [-skip-empty-file] <src> <localdst>]

       [-help [cmd ...]]

       [-ls [-c] [-d] [-h] [-q] [-r] [-t] [-s] [-r] [-u] [<path> ...]]

       [-mkdir [-p] <path> ...]

       [-movefromlocal <localsrc> ... <dst>]

       [-movetolocal <src> <localdst>]

       [-mv <src> ... <dst>]

       [-put [-f] [-p] [-l] [-d] <localsrc> ... <dst>]

       [-renamesnapshot <snapshotdir> <oldname> <newname>]

       [-rm [-f] [-r|-r] [-skiptrash] [-safely] <src> ...]

       [-rmdir [--ignore-fail-on-non-empty] <dir> ...]

       [-setfacl [-r] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]

       [-setfattr {-n name [-v value] | -x name} <path>]

       [-setrep [-r] [-w] <rep> <path> ...]

       [-stat [format] <path> ...]

       [-tail [-f] <file>]

       [-test -[defsz] <path>]

       [-text [-ignorecrc] <src> ...]

       [-touchz <path> ...]

       [-truncate [-w] <length> <path> ...]

       [-usage [cmd ...]]

 [toto@hadoop learn]$

fs shell

調用檔案系統(fs)shell指令應使用 bin/hadoop fs <args>的形式。 所有的的fs shell指令使用uri路徑作為參數。uri格式是scheme://authority/path。對hdfs檔案系統,scheme是hdfs,對本地檔案系統,scheme是file。其中scheme和authority參數都是可選的,如果未加指定,就會使用配置中指定的預設scheme。一個hdfs檔案或目錄比如/parent/child可以表示成hdfs://namenode:namenodeport/parent/child,或者更簡單的/parent/child(假設你配置檔案中的預設值是namenode:namenodeport)。大多數fs shell指令的行為和對應的unix shell指令類似,不同之處會在下面介紹各指令使用詳情時指出。出錯資訊會輸出到stderr,其他資訊輸出到stdout。

-help            

功能:輸出這個指令參數手冊

-ls 

功能:顯示目錄資訊

示例: hadoop fs -ls hdfs://hadoop:9000/

備注:這些參數中,所有的hdfs路徑都可以簡寫

-->hadoop fs -ls /   等同于上一條指令的效果

[toto@hadoop learn]$ hadoop fs -ls hdfs://hadoop:9000/

drwxr-xr-x   - toto supergroup          0 2017-05-29 14:01 hdfs://hadoop:9000/findbugs-1.3.9

drwxr-xr-x   - toto supergroup          0 2017-05-29 03:23 hdfs://hadoop:9000/hive

drwx------   - toto supergroup          0 2017-05-29 14:47 hdfs://hadoop:9000/tmp

drwxr-xr-x   - toto supergroup          0 2017-05-29 14:47 hdfs://hadoop:9000/user

[toto@hadoop learn]$

上面的指令等同:hadoop fs -ls /

[toto@hadoop learn]$ hadoop fs -ls hdfs://hadoop:9000/findbugs-1.3.9

下面的指令表示同時列出hdfs://hadoop:9000/findbugs-1.3.9和hive下面的内容

[toto@hadoop learn]$ hadoop fs -ls hdfs://hadoop:9000/findbugs-1.3.9 /hive

-mkdir   

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

功能:在hdfs上建立目錄,接受路徑指定的uri作為參數,建立這些目錄。其行為類似于unix的mkdir -p,它會建立路徑中的各級父目錄。

示例:hadoop fs  -mkdir  -p  /aaa/bbb/cc/dd

再如示例:

[toto@hadoop learn]$hadoop fs –mkdir -p /user/hadoop/dir1 /user/hadoop/dir2

[toto@hadoop learn]$ hadoop fs -mkdir -p hdfs://hadoop:9000/toto hdfs://hadoop:9000/toto2

[toto@hadoop learn]$ hadoop fs -ls /

found 6 items

drwxr-xr-x   - toto supergroup          0 2017-05-29 03:23 /hive

drwx------   - toto supergroup          0 2017-05-29 14:47 /tmp

drwxr-xr-x   - toto supergroup          0 2017-05-29 23:40 /toto

drwxr-xr-x   - toto supergroup          0 2017-05-29 23:41 /toto2

drwxr-xr-x   - toto supergroup          0 2017-05-29 23:36 /user

對應浏覽器上的通路效果如下:http://hadoop:50070/explorer.html#/

HDFS指令行用戶端使用,指令行用戶端支援的指令參數,常用指令參數介紹3.HDFS的shell(指令行用戶端)操作

顯示效果一緻

-movefromlocal  

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

功能:從本地剪切粘貼到hdfs

[toto@hadoop learn]$ ls

hadoop  license-asm.txt

[toto@hadoop learn]$ hdfs dfs -movefromlocal license-asm.txt /toto

[toto@hadoop learn]$ hdfs dfs -ls /toto

found 1 items

-rw-r--r--   3 toto supergroup       1511 2017-05-29 23:50 /toto/license-asm.txt

[toto@hadoop learn]$

再如:

[toto@hadoop learn]$ hadoop fs -movefromlocal hadoop /toto

[toto@hadoop learn]$ hadoop fs -ls /toto

found 2 items

-rw-r--r--   3 toto supergroup       1511 2017-05-29 23:50 /toto/license-asm.txt

drwxr-xr-x   - toto supergroup          0 2017-05-29 23:53 /toto/hadoop

-movetolocal             

功能:從hdfs剪切粘貼到本地

示例:hadoop  fs  - movetolocal   /aaa/bbb/cc/dd  /home/hadoop/a.txt

--appendtofile 

功能:追加一個檔案到已經存在的檔案末尾

示例:hadoop  fs  -appendtofile  ./hello.txt  hdfs://hadoop:9000/hello.txt

可以簡寫為:

hadoop  fs  -appendtofile  ./hello.txt  /hello.txt

實際案例:

[toto@hadoop learn]$ hadoop fs -put text.txt /toto

[toto@hadoop learn]$ hadoop fs -ls /toto

found 3 items

-rw-r--r--   3 toto supergroup       1511 2017-05-29 23:50 /toto/license-asm.txt

drwxr-xr-x   - toto supergroup          0 2017-05-29 23:53 /toto/hadoop

-rw-r--r--   3 toto supergroup          0 2017-05-29 23:59 /toto/text.txt

[toto@hadoop learn]$ cat hello.txt

示例:hadoop  fs  -appendtofile  ./hello.txt  hdfs://hadoop:9000/hello.txt

hadoop  fs  -appendtofile  ./hello.txt  /hello.txt

将檔案上傳到hdfs

[toto@hadoop learn]$ hadoop fs -appendtofile ./hello.txt hdfs://hadoop:9000/toto/text.txt

檢視拼接到text.txt中的内容

[toto@hadoop learn]$ hadoop fs -cat /toto/text.txt

-cat 

功能:顯示檔案内容 

示例:hadoop fs -cat  /hello.txt

-tail                

功能:顯示一個檔案的末尾

示例:hadoop  fs  -tail  /weblog/access_log.1

[toto@hadoop learn]$ hadoop fs -tail /toto/text.txt

示例:hadoop  fs  -appendtofile  ./hello.txt  hdfs://hadoop:9000/hello.txt

-text                 

功能:以字元形式列印一個檔案的内容

示例:hadoop  fs  -text  /weblog/access_log.1

[toto@hadoop learn]$ hadoop fs -text /toto/text.txt

-chgrp

-chmod

-chown

功能:linux檔案系統中的用法一樣,對檔案所屬權限

示例:

hadoop  fs  -chmod  666  /hello.txt

hadoop  fs  -chown  someuser:somegrp   /hello.txt

[toto@hadoop learn]$ hadoop fs -chmod 777 /toto/text.txt

[toto@hadoop learn]$ hadoop fs -ls /toto/text.txt

-rwxrwxrwx   3 toto supergroup        149 2017-05-30 00:01 /toto/text.txt

[toto@hadoop learn]$ hadoop fs -chmod 666 /toto/text.txt

-rw-rw-rw-   3 toto supergroup        149 2017-05-30 00:01 /toto/text.txt

-copyfromlocal   

功能:從本地檔案系統中拷貝檔案到hdfs路徑去

示例:hadoop  fs  -copyfromlocal  ./jdk.tar.gz  /aaa/

[toto@hadoop learn]$ cat hello.txt

[toto@hadoop learn]$ hadoop fs -copyfromlocal ./hello.txt /toto2

hello.txt  text.txt

[toto@hadoop learn]$ hadoop fs -ls /toto2

-rw-r--r--   3 toto supergroup        149 2017-05-30 00:09 /toto2/hello.txt

-copytolocal     

功能:從hdfs拷貝到本地

示例:hadoop fs -copytolocal /aaa/jdk.tar.gz

[toto@hadoop learn]$ hadoop fs -ls /

found 6 items

drwxr-xr-x   - toto supergroup          0 2017-05-29 23:59 /toto

drwxr-xr-x   - toto supergroup          0 2017-05-30 00:09 /toto2

[toto@hadoop learn]$ hadoop fs -copytolocal /findbugs-1.3.9 ./

findbugs-1.3.9  hello.txt  text.txt

[toto@hadoop learn]$ hadoop fs -ls /

drwxr-xr-x   - toto supergroup          0 2017-05-29 14:01 /findbugs-1.3.9

drwxr-xr-x   - toto supergroup          0 2017-05-29 03:23 /hive

drwx------   - toto supergroup          0 2017-05-29 14:47 /tmp

drwxr-xr-x   - toto supergroup          0 2017-05-29 23:59 /toto

drwxr-xr-x   - toto supergroup          0 2017-05-30 00:09 /toto2

drwxr-xr-x   - toto supergroup          0 2017-05-29 23:36 /user

-cp             

功能:從hdfs的一個路徑拷貝hdfs的另一個路徑

示例: hadoop  fs  -cp  /aaa/jdk.tar.gz  /bbb/jdk.tar.gz.2

usage: hadoop fs [generic options] -cp [-f] [-p | -p[topax]] [-d] <src> ... <dst>

[toto@hadoop learn]$ hadoop fs -cp -p /findbugs-1.3.9 /toto2

drwxr-xr-x   - toto supergroup          0 2017-05-29 14:01 /toto2/findbugs-1.3.9

-rw-r--r--   3 toto supergroup        149 2017-05-30 00:09 /toto2/hello.txt

-mv                    

功能:在hdfs目錄中移動檔案

示例: hadoop  fs  -mv  /aaa/jdk.tar.gz  /

drwxr-xr-x   - toto supergroup          0 2017-05-29 14:01 /toto2/findbugs-1.3.9

[toto@hadoop learn]$ hadoop fs -mv /toto/hello.txt /user

mv: `/toto/hello.txt': no such file or directory

[toto@hadoop learn]$ hadoop fs -mv /toto2/hello.txt /user

[toto@hadoop learn]$ hadoop fs -ls /user

drwxr-xr-x   - toto supergroup          0 2017-05-29 23:36 /user/hadoop

-rw-r--r--   3 toto supergroup        149 2017-05-30 00:09 /user/hello.txt

drwxr-xr-x   - toto supergroup          0 2017-05-29 14:51 /user/toto

-get             

功能:等同于copytolocal,就是從hdfs下載下傳檔案到本地

示例:hadoop fs -get  /aaa/jdk.tar.gz

功能:合并下載下傳多個檔案

示例:比getmerge    如hdfs的目錄 /aaa/下有多個檔案:log.1, log.2,log.3,...

hadoop fs -getmerge /aaa/log.* ./log.sum

-put               

功能:等同于copyfromlocal

示例:hadoop  fs  -put  /aaa/jdk.tar.gz  /bbb/jdk.tar.gz.2

-rm               

功能:删除檔案或檔案夾

示例:hadoop fs -rm -r /aaa/bbb/

-rmdir                

功能:删除空目錄

示例:hadoop  fs  -rmdir   /aaa/bbb/ccc

删除非空檔案夾時不讓報錯的指令:

hadoop fs -rmdir --ignore-fail-on-non-empty /toto2/findbugs-1.3.9/lib

-df              

功能:統計檔案系統的可用空間資訊

示例:hadoop  fs  -df  -h  /

[toto@hadoop learn]$ hdfs dfs -df -h /

filesystem             size     used  available  use%

hdfs://hadoop:9000  134.4 g  472.4 m     97.8 g    0%

-du

功能:統計檔案夾的大小資訊

hadoop  fs  -du  -s  -h /aaa/*

[toto@hadoop learn]$ hadoop fs -du -s -h /toto2

2.3 m  /toto2

-count        

功能:統計一個指定目錄下的檔案節點數量

示例:hadoop fs -count /aaa/

-setrep               

功能:設定hdfs中檔案的副本數量

示例:hadoop fs -setrep 3 /aaa/jdk.tar.gz   (這裡的3)

實際指令:

[toto@hadoop learn]$ hadoop fs -setrep 3 /toto2/findbugs-1.3.9

replication 3 set: /toto2/findbugs-1.3.9/license-asm.txt

replication 3 set: /toto2/findbugs-1.3.9/license-bcel.txt

replication 3 set: /toto2/findbugs-1.3.9/license-commons-lang.txt

replication 3 set: /toto2/findbugs-1.3.9/license-docbook.txt

replication 3 set: /toto2/findbugs-1.3.9/license-dom4j.txt

replication 3 set: /toto2/findbugs-1.3.9/license-jformatstring.txt

replication 3 set: /toto2/findbugs-1.3.9/license-jaxen.txt

replication 3 set: /toto2/findbugs-1.3.9/license-jcip.txt

replication 3 set: /toto2/findbugs-1.3.9/license-jdepend.txt

replication 3 set: /toto2/findbugs-1.3.9/license-jsr305.txt

replication 3 set: /toto2/findbugs-1.3.9/license-mysql-connector.txt

replication 3 set: /toto2/findbugs-1.3.9/license.txt

補充:檢視dfs叢集工作狀态的指令

hdfs dfsadmin -report