一 HDFS的Shell介紹
HDFS允許用戶數(shù)據(jù)組織成文件和文件夾的方式,它提供一個叫DFSShell的接口,使用戶可以和HDFS中的數(shù)據(jù)交互。命令集的語法跟其他用戶熟悉的shells(bash,csh)相似。
Shell在計算機科學中俗稱“殼”,是提供給使用者使用界面的進行與系統(tǒng)交互的軟件,通過接收用戶輸入的命令執(zhí)行相應的操作,Shell分為圖形界面Shell和命令行式Shell。
文件系統(tǒng)(FS)Shell包含了各種的類Shell的命令,可以直接與Hadoop分布式文件系統(tǒng)以及其他文件系統(tǒng)進行交互。
命令 | 適用場合 |
---|---|
hadoop fs | 適用于任何不同的文件系統(tǒng),比如本地文件系統(tǒng)和HDFS文件系統(tǒng) |
hadoop dfs | 只能適用于HDFS文件系統(tǒng) |
hdfs dfs | hdfs dfs跟hadoop dfs的命令作用一樣,也只能適用于HDFS文件系統(tǒng) |
二 HDFS常用命令操作
啟動hadoop集群
01 創(chuàng)建目錄
(1)創(chuàng)建單層目錄
輸入命令:hdfs dfs -mkdir /ied
在Hadoop WebUI查看創(chuàng)建的目錄
(3)創(chuàng)建多層目錄
輸入命令:hdfs dfs -mkdir /love/books
,會報錯,因為/love
目錄不存在
這里可以先創(chuàng)建 /luzhou
目錄,然后在里面再創(chuàng)建 lzy
子目錄,但是想要一步到位,就只需要一個 -p
參數(shù)即可。
輸入命令:hdfs dfs -mkdir -p /luzhou/lzy
在Hadoop WebUI查看創(chuàng)建的多層目錄
02 查看目錄
輸入命令:hdfs dfs -ls /
,查看根目錄(可以在任何節(jié)點上查看,結果均一樣)。
輸入命令:hdfs dfs -ls /love
注:如果我們要查看根目錄里全部的資源,那么要用到遞歸參數(shù)
-R
(必須大寫)。
執(zhí)行命令:hdfs dfs -ls -R /
,遞歸查看/目錄(采用遞歸算法遍歷樹結構)
03 上傳本地文件到HDFS
創(chuàng)建一個本地目錄:/document/txt,輸入命令:mkdir -p /document/txt
在/txt
目錄下創(chuàng)建一個test.txt
文件,輸入命令(>:重定向命令):echo "hello hadoop world" > /document/txt/test.txt
查看test.txt文件內(nèi)容,輸入命令:cat /document/txt/test.txt
上傳test.txt文件到HDFS的/ied目錄,輸入命令:
hdfs dfs -put /document/txt/test.txt /ied
在Hadoop WebUI界面查看是否上傳成功
04 查看文件內(nèi)容
輸入命令:hdfs dfs -cat /ied/test.txt
05 下載HDFS文件到本地
1.刪除本地的 /document/txt/
目錄下的 test.txt
文件,輸入命令:rm -rf /document/txt/test.txt
2.下載HDFS文件系統(tǒng)的
/ied/test.txt
到本地當前目錄不改名,輸入命令:hdfs dfs -get /ied/test.txt /document/txt/
3.檢查是否下載成功,輸入命令:
ll /document/txt/test.txt
可以將HDFS上的文件下載到本地指定位置,并且可以更改文件名,輸入命令:
hdfs dfs -get /ied/test.txt /document/txt/exam.txt
檢查是否下載成功,輸入命令:ll /document/txt/exam.txt
06 刪除HDFS文件
輸入命令:hdfs dfs -rm /ied/test.txt
檢查是否刪除成功,輸入命令:hdfs dfs -ls /ied/test.txt
使用通配符,可以刪除滿足一定特征的文件
07 刪除HDFS目錄
輸入命令:hdfs dfs -rmdir /yibin
輸入命令:hdfs dfs -rmdir /love
提示: -rmdir 命令刪除不了非空目錄。
要遞歸刪除才能刪除非空目錄:hdfs dfs -rm -r /love(-r:recursive)
08 移動目錄或文件
-mv
命令兼有移動與改名的雙重功能
將 /ied
目錄更名為 /ied01
,輸入命令:hdfs dfs -mv /ied /ied01
在Hadoop WebUI查看是否更名成功將
/ied01/exam.txt
更名為/ied01/test.txt
,輸入命令:hdfs dfs -mv /ied01/exam.txt /ied01/test.txt
查看改名后的test.txt文件內(nèi)容,輸入命令:
hdfs dfs -cat /ied01/test.txt
創(chuàng)建
/ied02
目錄,將ied01/test.txt
移動到/ied02
目錄,并且改名為exam.txt
創(chuàng)建ied02目錄,輸入命令:hdfs dfs -mkdir /ied02
移動改名,輸入命令:hdfs dfs -mv /ied01/test.txt /ied02/exam.txt
在Hadoop WebUI界面查看
09 文件合并下載
在/document/txt/
目錄下創(chuàng)建sport.txt、music.txt和book.txt并上傳在Hadoop WebUI界面查看上傳的三個文件,注意文件名是按字典排序了的
合并
/ied01
目錄的文件下載到/document/txt
目錄的merger.txt
,輸入命令:hdfs dfs -getmerge /ied01/* /document/txt/merger.txt
查看本地的merger.txt,看是不是三個文件合并后的內(nèi)容,輸入命令:
cat /document/txt/merger.txt
由上圖可知,merger.txt
是book.txt
、music.txt
與sport.txt
合并后的結果
10 檢查文件信息
fsck: file system check —— 文件系統(tǒng)檢查
檢查/ied01/book.txt
文件,輸入命令:hdfs fsck /ied01/book.txt -files -blocks -locations -racks
已知HDFS里一個文件塊是128MB,上傳一個大于128MB的文件,hadoop-3.3.4.tar.gz大約663.24MB
128MB×5=640MB<663.24MB<768MB=128MB×6 ,HDFS會將hadoop-3.3.4.tar.gz分割成6塊
輸入命令:hdfs dfs -put /opt/hadoop-3.3.4.tar.gz /ied01
,將hadoop壓縮包上傳到HDFS的/ied01
目錄
查看HDFS上hadoop-3.3.4.tar.gz文件信息,輸入命令:hdfs fsck /ied01/hadoop-3.3.4.tar.gz -files -locations -racks
在Hadoop WebUI來查看文件塊信息更加方便,總共有6個文件塊:Block0、Block1、Block2、Block3、Block4、Block5
第1個文件塊信息
第6個文件塊信息
11 創(chuàng)建時間戳文件
在/ied01
目錄里創(chuàng)建一個文件sunshine.txt,執(zhí)行命令:hdfs dfs -touchz /ied01/sunshine.txt
在Hadoop WebUI來查看到創(chuàng)建的是一個空文件,大小為0字節(jié)
這種空文件,一般用作標識文件,也可叫做時間戳文件,再次在/ied01
目錄下創(chuàng)建sunshine.txt
同名文件
說明:如果touchz命令的路徑指定的文件不存在,那就創(chuàng)建一個空文件;如果指定的文件存在,那就改變該文件的時間戳。
12 復制文件或目錄
cp: copy - 拷貝或復制
(1)同名復制文件
將/ied01/music.txt
復制到/ied02
里,輸入命令:hdfs dfs -cp /ied01/music.txt /ied02
查看拷貝生成的文件
(2)改名復制文件
將/ied01/book.txt
復制到/ied02
目錄,改名為read.txt
,輸入命令:hdfs dfs -cp /ied01/book.txt /ied02/read.txt
查看拷貝后的文件內(nèi)容,輸入命令:
hdfs dfs -cat /ied02/read.txt
源文件book.txt
依然存在
(3)復制目錄
將/ied01
目錄復制到/ied03
目錄,輸入命令:hdfs dfs -cp /ied01 /ied03
查看拷貝后的/ied03
目錄,輸入命令:hdsf dfs -ls /ied03
, 其內(nèi)容跟/ied01
完全相同
13 查看文件大小
du: disk usage
輸入命令:hdfs dfs -du /ied01/book.txt
可以看到文件/ied01/book.txt大小是12個字符,包含9個字母、2個空格和一個看不見的結束符
14 上傳文件
-copyFromLocal
類似于-put
,輸入命令:hdfs dfs -copyFromLocal merger.txt /ied02
查看是否上傳成功,輸入命令:hdfs dfs -ls /ied02
15 下載文件
-copyToLocal
類似于-get
,執(zhí)行命令:hdfs dfs -copyToLocal /ied01/sunshine.txt /document/txt/sunlight.txt
查看是否下載成功,輸入命令:
ll /document/txt/
16 查看某目錄下文件個數(shù)
輸入命令:hdfs dfs -count /ied01
17 檢查hadoop本地庫
輸入命令:hadoop checknative -a
查看hadoop本地庫文件
18 進入和退出安全模式
(1)進入安全模式
輸入命令:hdfs dfsadmin -safemode enter
,
注意:進入安全模式之后,只能讀不能寫
此時,如果要創(chuàng)建目錄,就會報錯文章來源:http://www.zghlxwxcb.cn/news/detail-407105.html
(2)退出安全模式
輸入命令:hdfs dfsadmin -safemode leave
此時,創(chuàng)建目錄
/ied04
就沒有任何問題文章來源地址http://www.zghlxwxcb.cn/news/detail-407105.html
到了這里,關于大數(shù)據(jù):HDFS的Shell常用命令操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!