hadoop HDFS常用文件操作命令
命令基本格式:
hadoop fs -cmd < args >
1.ls
hadoop fs -ls /
列出hdfs文件系統(tǒng)根目錄下的目錄和文件
hadoop fs -ls -R /
列出hdfs文件系統(tǒng)所有的目錄和文件
2.put
hadoop fs -put < local file > < hdfs file >
hdfs file的父目錄一定要存在蜕提,否則命令不會執(zhí)行
hadoop fs -put < local file or dir >...< hdfs dir >
hdfs dir 一定要存在巍佑,否則命令不會執(zhí)行
hadoop fs -put - < hdsf file>
從鍵盤讀取輸入到hdfs file中乱投,按Ctrl+D結(jié)束輸入选调,hdfs file不能存在,否則命令不會執(zhí)行
2.1.moveFromLocal
hadoop fs -moveFromLocal < local src > ... < hdfs dst >
與put相類似霎俩,命令執(zhí)行后源文件 local src 被刪除哀军,也可以從從鍵盤讀取輸入到hdfs file中
2.2.copyFromLocal
hadoop fs -copyFromLocal < local src > ... < hdfs dst >
與put相類似,也可以從從鍵盤讀取輸入到hdfs file中
3.get
hadoop fs -get < hdfs file > < local file or dir>
local file不能和 hdfs file名字不能相同打却,否則會提示文件已存在杉适,沒有重名的文件會復(fù)制到本地
hadoop fs -get < hdfs file or dir > ... < local dir >
拷貝多個文件或目錄到本地時,本地要為文件夾路徑
注意:如果用戶不是root柳击, local 路徑要為用戶文件夾下的路徑猿推,否則會出現(xiàn)權(quán)限問題,
3.1.moveToLocal
當(dāng)前版本中還未實(shí)現(xiàn)此命令
3.2.copyToLocal
hadoop fs -copyToLocal < local src > ... < hdfs dst >
與get相類似
4.rm
hadoop fs -rm < hdfs file > ...
hadoop fs -rm -r < hdfs dir>...
每次可以刪除多個文件或目錄
5.mkdir
hadoop fs -mkdir < hdfs path>
只能一級一級的建目錄捌肴,父目錄不存在的話使用這個命令會報錯
hadoop fs -mkdir -p < hdfs path>
所創(chuàng)建的目錄如果父目錄不存在就創(chuàng)建該父目錄
6.getmerge
hadoop fs -getmerge < hdfs dir > < local file >
將hdfs指定目錄下所有文件排序后合并到local指定的文件中蹬叭,文件不存在時會自動創(chuàng)建,文件存在時會覆蓋里面的內(nèi)容
hadoop fs -getmerge -nl < hdfs dir > < local file >
加上nl后状知,合并到local file中的hdfs文件之間會空出一行
7.cp
hadoop fs -cp < hdfs file > < hdfs file >
目標(biāo)文件不能存在秽五,否則命令不能執(zhí)行,相當(dāng)于給文件重命名并保存试幽,源文件還存在
hadoop fs -cp < hdfs file or dir >... < hdfs dir >
目標(biāo)文件夾要存在筝蚕,否則命令不能執(zhí)行
8.mv
hadoop fs -mv < hdfs file > < hdfs file >
目標(biāo)文件不能存在,否則命令不能執(zhí)行铺坞,相當(dāng)于給文件重命名并保存起宽,源文件不存在
hadoop fs -mv < hdfs file or dir >... < hdfs dir >
源路徑有多個時,目標(biāo)路徑必須為目錄济榨,且必須存在坯沪。
注意:跨文件系統(tǒng)的移動(local到hdfs或者反過來)都是不允許的
9.count
hadoop fs -count < hdfs path >
統(tǒng)計hdfs對應(yīng)路徑下的目錄個數(shù),文件個數(shù)擒滑,文件總計大小
顯示為目錄個數(shù)腐晾,文件個數(shù),文件總計大小丐一,輸入路徑
10.du
hadoop fs -du < hdsf path>
顯示hdfs對應(yīng)路徑下每個文件夾和文件的大小
hadoop fs -du -s < hdsf path>
顯示hdfs對應(yīng)路徑下所有文件和的大小
hadoop fs -du - h < hdsf path>
顯示hdfs對應(yīng)路徑下每個文件夾和文件的大小,文件的大小用方便閱讀的形式表示藻糖,例如用64M代替67108864
11.text
hadoop fs -text < hdsf file>
將文本文件或某些格式的非文本文件通過文本格式輸出
12.setrep
hadoop fs -setrep -R 3 < hdfs path >
改變一個文件在hdfs中的副本個數(shù),上述命令中數(shù)字3為所設(shè)置的副本個數(shù)库车,-R選項可以對一個人目錄下的所有目錄+文件遞歸執(zhí)行改變副本個數(shù)的操作
13.stat
hdoop fs -stat [format] < hdfs path >
返回對應(yīng)路徑的狀態(tài)信息
[format]可選參數(shù)有:%b(文件大芯奁狻),%o(Block大心堋)洋满,%n(文件名),%r(副本個數(shù))珍坊,%y(最后一次修改日期和時間)
可以這樣書寫hadoop fs -stat %b%o%n < hdfs path >牺勾,不過不建議,這樣每個字符輸出的結(jié)果不是太容易分清楚
14.tail
hadoop fs -tail < hdfs file >
在標(biāo)準(zhǔn)輸出中顯示文件末尾的1KB數(shù)據(jù)
15.archive
hadoop archive -archiveName name.har -p < hdfs parent dir > < src >* < hdfs dst >
命令中參數(shù)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的內(nèi)容可以用如下命令:
hadoop fs -ls /des/hadoop.jar
顯示har壓縮的是那些文件可以用如下命令
hadoop fs -ls -R har:///des/hadoop.har
注意:har文件不能進(jìn)行二次壓縮。如果想給.har加文件疹味,只能找到原來的文件仅叫,重新創(chuàng)建一個。har文件中原來文件的數(shù)據(jù)并沒有變化糙捺,har文件真正的作用是減少NameNode和DataNode過多的空間浪費(fèi)
16.balancer
hdfs balancer
如果管理員發(fā)現(xiàn)某些DataNode保存數(shù)據(jù)過多诫咱,某些DataNode保存數(shù)據(jù)相對較少,可以使用上述命令手動啟動內(nèi)部的均衡過程
17.dfsadmin
hdfs dfsadmin -help
管理員可以通過dfsadmin管理HDFS洪灯,用法可以通過上述命令查看
hdfs dfsadmin -report
顯示文件系統(tǒng)的基本數(shù)據(jù)
hdfs dfsadmin -safemode < enter | leave | get | wait >
enter:進(jìn)入安全模式坎缭;leave:離開安全模式;get:獲知是否開啟安全模式;
wait:等待離開安全模式