Hadoop Hdfs常用指令
概述
本文檔介紹Hadoop hdfs系統的一些常用指令。
操作hdfs系統可以使用hadoop fs 也可以使用 hdfs dfs ,兩者效果一樣。(hadoop dfs指令已不再建議使用)
參考: http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html
常用指令
一、hadoop fs (hdfs dfs) 檔案操作
1)ls 顯示目錄下的所有檔案或者檔案夾
使用方法: hadoop fs -ls [uri形式目錄]
示例: hadoop fs –ls / 顯示根目錄下的所有檔案和目錄
顯示目錄下的所有檔案可以加 -R 選項
示例: hadoop fs -ls -R /
2)cat 檢視檔案内容
使用方法:hadoop fs -cat URI [URI …]
示例: hadoop fs -cat /in/test2.txt
3)mkdir 建立目錄
使用方法:hadoop fs -mkdir [uri形式目錄]
示例: hadoop fs –mkdir /test
建立多級目錄 加上 –p
示例: hadoop fs –mkdir -p /a/b/c
4)rm 删除目錄或者檔案
使用方法:hadoop fs -rm [檔案路徑] 删除檔案夾加上 -r
示例: hadoop fs -rm /test1.txt
删除檔案夾加上 -r,
示例:hadoop fs -rm -r /test
5)put 複制檔案
将檔案複制到hdfs系統中,也可以是從标準輸入中讀取檔案,此時的dst是一個檔案
使用方法: hadoop fs -put …
示例:
Hadoop fs -put /usr/wisedu/temp/test1.txt /
從标準輸入中讀取檔案:hadoop fs -put -/in/myword
6)cp 複制系統内檔案
使用方法:hadoopfs -cp URI [URI …]
将檔案從源路徑複制到目标路徑。這個指令允許有多個源路徑,此時目标路徑必須是一個目錄。
示例:
hadoop fs -cp /in/myword/word
7)copyFromLocal 複制本地檔案到hdfs
使用方法:hadoop fs-copyFromLocal URI
除了限定源路徑是一個本地檔案外,和put指令相似
8)get 複制檔案到本地系統
使用方法:hadoop fs -get[-ignorecrc] [-crc]
複制檔案到本地檔案系統。可用-ignorecrc選項複制CRC校驗失敗的檔案。使用-crc選項複制檔案以及CRC資訊。
示例:hadoop fs -get/word /usr/wisedu/temp/word.txt
9)copyToLocal 複制 檔案到本地系統
使用方法:hadoop fs-copyToLocal [-ignorecrc] [-crc] URI
除了限定目标路徑是一個本地檔案外,和get指令類似。
示例:hadoop fs - copyToLocal/word /usr/wisedu/temp/word.txt
10)mv
将檔案從源路徑移動到目标路徑。這個指令允許有多個源路徑,此時目标路徑必須是一個目錄。不允許在不同的檔案系統間移動檔案。
使用方法:hadoop fs -mv URI [URI …]
示例:hadoop fs -mv /in/test2.txt /test2.txt
11)du 顯示檔案大小
顯示目錄中所有檔案的大小。
使用方法:hadoop fs -du URI [URI …]
示例: hadoop fs -du /
顯示目前目錄或者檔案夾的大小可加選項 -s
示例: hadoop fs -du -s /
12)touchz 建立空檔案
使用方法:hadoop fs -touchz URI [URI …]
建立一個0位元組的空檔案
示例:hadoop fs -touchz /empty.txt
13)chmod 改變檔案權限
使用方法:hadoop fs -chmod[-R] <MODE[,MODE]… | OCTALMODE> URI [URI …]
與Linux平台下chmod指令相似,改變檔案的權限。使用-R将使改變在目錄結構下遞歸進行。指令的使用者必須是檔案的所有者或者超級使用者。
示例:先建立一個普通使用者test:sudo useradd -m test
再用wisedu使用者在hdfs系統目錄/a下建立hello.txt檔案,此時test具有讀取/a/hello.txt檔案的權限,如下圖:
在切換回wisedu使用者修改檔案的權限,讓/a目錄下的檔案對于其他使用者都不可讀,指令: hadoop fs -chmod -R o-r /a如下圖所示,再切換回test使用者檢視/a/hello.txt檔案時提示沒有權限:
14)chown 改變檔案所有者
使用方法:hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI]
改變檔案的擁有者。使用-R将使改變在目錄結構下遞歸進行。指令的使用者必須是超級使用者。
示例:hadoop fs -chown -R test /a 如下圖:
15)chgrp 改變檔案所在組
使用方法:hadoop fs -chgrp [-R] GROUP URI [URI …]
改變檔案所屬的組。使用-R将使改變在目錄結構下遞歸進行。指令的使用者必須是檔案的所有者或者超級使用者。
示例:hadoop fs -chgrp -R test /a 如下圖:
二、hdfs dfsadmin 管理指令
1)-report
檢視檔案系統的基本資訊和統計資訊。
示例:hdfs dfsadmin -report
2)-safemode
enter | leave | get | wait:安全模式指令。安全模式是NameNode的一種狀态,在這種狀态下,NameNode不接受對名字空間的更改(隻讀);不複制或删除塊。NameNode在啟動時自動進入安全模式,當配置塊的最小百分數滿足最小副本數的條件時,會自動離開安全模式。enter是進入,leave是離開。
示例:hdfs dfsadmin -safemode get
hdfsdfsadmin -safemode enter
3)-refreshNodes
重新讀取hosts和exclude檔案,使新的節點或需要退出叢集的節點能夠被NameNode重新識别。這個指令在新增節點或登出節點時用到。
示例:hdfs dfsadmin -refreshNodes
4)-finalizeUpgrade
終結HDFS的更新操作。DataNode删除前一個版本的工作目錄,之後NameNode也這樣做。
5)-upgradeProgress
status| details | force:請求目前系統的更新狀态 | 更新狀态的細節| 強制更新操作
6)-metasave filename
儲存NameNode的主要資料結構到hadoop.log.dir屬性指定的目錄下的檔案中。
7)-setQuota……
為每個目錄設定配額。目錄配額是一個長整形整數,強制設定目錄樹下的名字個數。
8)-clrQuota……
為每個目錄清除配額設定。
9)-help
顯示幫助資訊