HDFS之一:hdfs命令行操作


1 Hadoop- Shell命令

HDFS是存取數據的分布式文件系統,那么對HDFS的操作,就是文件系統的基本操作,比如文件的創建、修改、刪除、修改權限等,文件夾的創建、刪除、重命名等。對HDFS的操作命令類似於Linux的shell對文件的操作,如ls、mkdir、rm等。

1.1 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

新建文件夾:

例如:在HDFS的/tmp/目錄下新建文件夾omcs

hadoop fs -mkdir /tmp/omcs 

列出HDFS的某目錄:

例如:列出HDFS的/tmp/omcs/目錄下的所有內容
hadoop fs -ls /tmp/omcs

[sflog@cnsz03pl0161:/home/sflog]$hadoop fs -ls /tmp/omcs
Found 2 items
drwxr-xr-x   - sflog hadoop          0 2017-02-28 19:32 /tmp/omcs/0227
-rw-r--r--   3 sflog hadoop       4573 2017-02-28 19:34 /tmp/omcs/0228
[sflog@cnsz03pl0161:/home/sflog]$

注意,hadoop fs -ls 沒有接路徑的話就會報錯,如果有默認路徑/user/root root指當前用戶就不會報錯了

完整寫法:hadoop fs -ls hdfs://主機名:端口號

duanxz@ubuntu:~$ hadoop fs -ls hdfs://localhost:9000/tmp

同樣可以在http://192.168.159.129:50070/explorer.html中查看

上傳文件:

hadoop fs -put linux文件路徑(也是要上傳文件的路徑) 空格 hadoop的hdfs的路徑
例如,把linux下當前目錄下t.txt文件上傳的hadoop的hdfs的/tmp/omcs/0227目錄下

hadoop fs -put t.txt /tmp/omcs/0227

 

在上傳文件時注意:
當你上傳文件到hadoop的hdfs文件目錄不存在的時候,hdfs會將你上傳的文件名改為該文件夾的名稱,如果hdfs文件系統中已經存在對應的文件時會提示,需要修改下文件名再上傳。
例如:hadoop fs -put t.txt /tmp/omcs/0228,會將t.txt文件保存為0228。

[sflog@cnsz03pl0161:/home/sflog]$hadoop fs -put t.txt /tmp/omcs/0227
put: `/tmp/omcs/0227/t.txt': File exists
[sflog@cnsz03pl0161:/home/sflog]$

下載文件:

下載操作就是把-put 換成-get,源文件路徑,目的地路徑,此時原文件為hdfs了,目的地是linux了,語法與-put一樣,只是原文和目的地互換了。

例如:[sflog@cnsz03pl0161:/home/sflog]$hadoop fs -get /tmp/omcs/0227/t.txt /home/sflog/dxz/t.txt

查看HDFS上的文件內容:
例如:查看剛剛上傳到0228的文件內容:
hadoop fs -cat /tmp/omcs/0228

查看文件內容1:

例如:hadoop fs -text /tmp/omcs/0228

查看文件內容2:

例如:hadoop fs -cat /tmp/omcs/0227

duanxz@ubuntu:~$ hadoop fs -cat /tmp/omcs/0227
02280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228022802280228
duanxz@ubuntu:~$

刪除文件

hadoop fs -rm /tmp/omcs/0228

 

 此語句的意思是刪除hdfs的根目錄下的0228文件


刪除文件夾

hadoop fs -rmr /tmp/omcs/0226  此語句的意思是刪除hdfs的0226目錄及目錄下的文件。

[sflog@cnsz03pl0161:/home/sflog/dxz]$hadoop fs -mkdir /tmp/omcs/0226
[sflog@cnsz03pl0161:/home/sflog/dxz]$hadoop fs -rm /tmp/omcs/0228
17/02/28 19:52:31 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /tmp/omcs/0228
[sflog@cnsz03pl0161:/home/sflog/dxz]$hadoop fs -rmr /tmp/omcs/0226
rmr: DEPRECATED: Please use 'rm -r' instead.
17/02/28 19:53:08 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /tmp/omcs/0226
[sflog@cnsz03pl0161:/home/sflog/dxz]$hadoop fs -ls /tmp/omcs
Found 1 items
drwxr-xr-x   - sflog hadoop          0 2017-02-28 19:32 /tmp/omcs/0227
[sflog@cnsz03pl0161:/home/sflog/dxz]$

hdfs幫助文檔

hadoop fs
hadoop fs -help 命令

NameNode
namenode存放信息在源碼的hdfs-default.xml里面有詳細的說明,把起拷貝的core-site.XML中
<name>hadoop.tmp.dir</name>的value/dfs/name/current/fsimage指定namenode存放在linux的路徑

DataNode
datanode存放信息在源碼的hdfs-default.xml里面有詳細的說明,把起拷貝的core-site.XML中<name>hadoop.tmp.dir</name>的value/dfs/data/currentssss指定datanode存放在linux的路徑

查看HDFS狀態:

hadoop dfsadmin -report 查看HDFS狀態,比如有哪些datanode,每個datanode的情況

 

hadoop dfsadmin -safemode leave 離開安全模式

hadoop dfsadmin -safemode enter 進入安全模式

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM