HDFS 基礎命令
前言
HDFS命令基本格式:hadoop fs -cmd < args >
ls 命令
hadoop fs -ls /
- 1
- 2
列出hdfs檔案系統根目錄下的目錄和檔案
hadoop fs -ls -R /
- 1
- 2
列出hdfs檔案系統所有的目錄和檔案
put 命令
hadoop fs -put < local file > < hdfs file >
- 1
- 2
hdfs file的父目錄一定要存在,否則命令不會執行
hadoop fs -put < local file or dir >...< hdfs dir >
- 1
- 2
hdfs dir 一定要存在,否則命令不會執行
hadoop fs -put - < hdsf file>
- 1
- 2
從鍵盤讀取輸入到hdfs file中,按Ctrl+D
結束輸入,hdfs file不能存在,否則命令不會執行
moveFromLocal 命令
hadoop fs -moveFromLocal < local src > ... < hdfs dst >
- 1
- 2
與put相類似,命令執行後原始檔 local src 被刪除,也可以從從鍵盤讀取輸入到hdfs file中
copyFromLocal 命令
hadoop fs -copyFromLocal < local src > ... < hdfs dst >
- 1
- 2
與put相類似,也可以從從鍵盤讀取輸入到hdfs file中
get 命令
hadoop fs -get < hdfs file > < local file or dir>
- 1
- 2
local file不能和 hdfs file名字不能相同,否則會提示檔案已存在,沒有重名的檔案會複製到本地
hadoop fs -get < hdfs file or dir > ... < local dir >
- 1
- 2
拷貝多個檔案或目錄到本地時,本地要為資料夾路徑
注意:如果使用者不是root, local 路徑要為使用者資料夾下的路徑,否則會出現許可權問題,
moveToLocal 命令
當前版本中還未實現此命令
copyToLocal 命令
hadoop fs -copyToLocal < local src > ... < hdfs dst >
- 1
- 2
與get相類似
rm 命令
hadoop fs -rm < hdfs file > ...
hadoop fs -rm -r < hdfs dir>...
- 1
- 2
- 3
每次可以刪除多個檔案或目錄
mkdir 命令
hadoop fs -mkdir < hdfs path>
- 1
- 2
只能一級一級的建目錄,父目錄不存在的話使用這個命令會報錯
hadoop fs -mkdir -p < hdfs path>
- 1
- 2
所建立的目錄如果父目錄不存在就建立該父目錄
getmerge 命令
hadoop fs -getmerge < hdfs dir > < local file >
- 1
- 2
將hdfs指定目錄下所有檔案排序後合併到local指定的檔案中,檔案不存在時會自動建立,檔案存在時會覆蓋裡面的內容
hadoop fs -getmerge -nl < hdfs dir > < local file >
- 1
- 2
加上nl後,合併到local file中的hdfs檔案之間會空出一行
cp 命令
hadoop fs -cp < hdfs file > < hdfs file >
- 1
- 2
目標檔案不能存在,否則命令不能執行,相當於給檔案重新命名並儲存,原始檔還存在
hadoop fs -cp < hdfs file or dir >... < hdfs dir >
- 1
- 2
目標資料夾要存在,否則命令不能執行
mv 命令
hadoop fs -mv < hdfs file > < hdfs file >
- 1
- 2
目標檔案不能存在,否則命令不能執行,相當於給檔案重新命名並儲存,原始檔不存在
hadoop fs -mv < hdfs file or dir >... < hdfs dir >
- 1
- 2
源路徑有多個時,目標路徑必須為目錄,且必須存在。
注意:跨檔案系統的移動(local到hdfs或者反過來)都是不允許的
count 命令
hadoop fs -count < hdfs path >
- 1
- 2
統計hdfs對應路徑下的目錄個數,檔案個數,檔案總計大小
顯示為目錄個數,檔案個數,檔案總計大小,輸入路徑
du 命令
hadoop fs -du < hdsf path>
- 1
- 2
顯示hdfs對應路徑下每個資料夾和檔案的大小
hadoop fs -du -s < hdsf path>
- 1
- 2
顯示hdfs對應路徑下所有檔案和的大小
hadoop fs -du - h < hdsf path>
- 1
- 2
顯示hdfs對應路徑下每個資料夾和檔案的大小,檔案的大小用方便閱讀的形式表示,例如用64M代替67108864
text 命令
hadoop fs -text < hdsf file>
- 1
- 2
將文字檔案或某些格式的非文字檔案通過文字格式輸出
setrep 命令
hadoop fs -setrep -R 3 < hdfs path >
- 1
- 2
改變一個檔案在hdfs中的副本個數,上述命令中數字3為所設定的副本個數,-R選項可以對一個人目錄下的所有目錄+檔案遞迴執行改變副本個數的操作
stat 命令
hdoop fs -stat [format] < hdfs path >
- 1
- 2
返回對應路徑的狀態資訊
[format]可選引數有:%b(檔案大小),%o(Block大小),%n(檔名),%r(副本個數),%y(最後一次修改日期和時間)
可以這樣書寫hadoop fs -stat %b%o%n < hdfs path >,不過不建議,這樣每個字元輸出的結果不是太容易分清楚
tail 命令
hadoop fs -tail < hdfs file >
- 1
- 2
在標準輸出中顯示檔案末尾的1KB資料
archive 命令
hadoop archive -archiveName name.har -p < hdfs parent dir > < src >* < hdfs dst >
- 1
- 2
命令中引數name:壓縮檔名,自己任意取;
< hdfs parent dir > :壓縮檔案所在的父目錄;
< src >:要壓縮的檔名;
< hdfs dst >:壓縮檔案存放路徑*示例:hadoop archive -archiveName hadoop.har -p /user 1.txt 2.txt /des
示例中將hdfs中/user目錄下的檔案1.txt,2.txt壓縮成一個名叫hadoop.har的檔案存放在hdfs中/des目錄下,如果1.txt,2.txt不寫就是將/user目錄下所有的目錄和檔案壓縮成一個名叫hadoop.har的檔案存放在hdfs中/des目錄下
顯示har的內容可以用如下命令:
hadoop fs -ls /des/hadoop.jar
- 1
- 2
顯示har壓縮的是那些檔案可以用如下命令
hadoop fs -ls -R har:///des/hadoop.har
- 1
- 2
注意:har檔案不能進行二次壓縮。如果想給.har加檔案,只能找到原來的檔案,重新建立一個。har檔案中原來檔案的資料並沒有變化,har檔案真正的作用是減少NameNode和DataNode過多的空間浪費。
balancer 命令
hdfs balancer
- 1
- 2
如果管理員發現某些DataNode儲存資料過多,某些DataNode儲存資料相對較少,可以使用上述命令手動啟動內部的均衡過程
dfsadmin 命令
hdfs dfsadmin -help
- 1
- 2
管理員可以通過dfsadmin管理HDFS,用法可以通過上述命令檢視
hdfs dfsadmin -report
- 1
- 2
顯示檔案系統的基本資料
hdfs dfsadmin -safemode < enter | leave | get | wait >
- 1
- 2
enter:進入安全模式;leave:離開安全模式;get:獲知是否開啟安全模式;
wait:等待離開安全模式
distcp 命令
用來在兩個HDFS之間拷貝資料
【完】