一文帶你了解HDFS的shell命令

1 準(zhǔn)備知識

HDFS:hadoop集群分布式文件系統(tǒng),用來存儲海量數(shù)據(jù)。HDFS采用分而治之的設(shè)計(jì)思想,將文件切分為文件塊進(jìn)行存儲,存儲數(shù)據(jù)的節(jié)點(diǎn)為datanode,存儲這些數(shù)據(jù)具體存放位置的節(jié)點(diǎn)為namenode。HDFS的架構(gòu)為一主多從,即namenode為主,datanade為從。本文主要介紹HDFS的shell命令,即如何通過命令行對HDFS進(jìn)行操作。

首先附上官網(wǎng)鏈接,HDFS Commands Guide。

介紹HDFS之前,需要了解一下命令行的格式,找個例子講一下。

hadoop fs [generic options]
        [-appendToFile <localsrc> ... <dst>]
        [-cat [-ignoreCrc] <src> ...]
        [-getfattr [-R] {-n name | -d} [-e en] <path>]

命令行中符號的含義如下表:

[] 可選內(nèi)容
<> 必選內(nèi)容
{} 分組
| 二選一
同一個內(nèi)容可多次出現(xiàn)
- 后面連接單個字符,可多個組合使用
-- 后面跟完整的單詞
Localsrc 本地源文件
dst 目標(biāo)路徑

參考上述,可寫如下命令:

hadoop fs -appendToFile <localsrc> ...<dst>
或者
hadoop fs -getfattr -d <path> 

2 shell命令

查看hdfs命令的方式,直接在hadoop集群上輸入hdfs,會輸出usage(用法)。

image-20201029235429389

hdfs的命令分為三種,分別是admin command(管理員)、client commands(客戶端)和 Daemon Command(進(jìn)程)

管理員命令 客戶端命令 進(jìn)程命令
cacheadmin classpath balancer
crypto dfs datanode
debug envvars dfsrouter
dfsadmin fetchdt diskbalancer
dfsrouteradmin getconf httpfs
ec groups journalnode
fsck lsSnapshottableDir mover
haadmin snapshotDiff namenode
jmxget version nfs3
oev portmap
oiv secondarynamenode
oiv_legacy spser
storagepolicies zkfc

2.1 admin command

管理員命令主要介紹 dfsadmin和fsck

輸入 hdfs dfsadmin 查看usage

image-20201101154135078
  • hdfs dfsadmin -report #報(bào)告集群狀態(tài)
image-20201101155907376
  • hdfs dfsadmin -safemode #設(shè)置集群的安全模式,當(dāng)集群出現(xiàn)問題時,可設(shè)置安全模式。enter :進(jìn)入安全模式,安全模式狀態(tài)下,不可以向hdfs上傳輸文件;leave:離開;get:獲取當(dāng)前狀態(tài);wait:等待。
image-20201101160837460
  • hdfs dfsadmin -allowSnapShot #啟用快照功能,快照功能開啟,就可以對文件進(jìn)行備份了。

輸入hdfs fsck 查看fsck的usage:

image-20201101181624043
  • hdfs fsck / #查看hdfs文件系統(tǒng)信息

2.2 client commands

客戶端命令介紹dfs、getconf和version

輸入 hdfs dfs 查看dfs的usage

image-20201101182622112

每個具體子命令的含義如下表

appendToFile 追加一個或者多個文件到hdfs指定文件中
cat 顯示文件內(nèi)容到標(biāo)準(zhǔn)輸出上
checksum 校驗(yàn)和
chgrp 修改所屬組
chmod hdfs上文件用戶名和用戶組
chown hdfs上文件權(quán)限修改
copyFromLocal 從本地復(fù)制文件到hdfs文件系統(tǒng)
copyToLocal 復(fù)制hdfs文件系統(tǒng)中的文件到本地
count 統(tǒng)計(jì)與指定文件模式匹配的路徑下的目錄,文件和字節(jié)數(shù)
cp 將文件或目錄復(fù)制到目標(biāo)路徑下
createSnapshot 創(chuàng)建快照
deleteSnapshot 刪除快照
df 查看可用空間
du 顯示給定目錄中包含的文件和目錄的大小或文件的長度,用字節(jié)大小表示。
expunge 清空回收站
find 查找
get 將本地文件從HDFS下載到本地
getfacl 顯示權(quán)限信息
getfattr 顯示其他信息
getmerge 將源目錄和目標(biāo)文件作為輸入,并將src中的文件連接到目標(biāo)本地文件
head 輸出文件開頭10行
help 幫助信息
ls 查看目錄下內(nèi)容
mkdir 創(chuàng)建目錄
moveFromLocal 從本地移動到hdfs
moveToLocal 移動到本地
mv 將文件或目錄從HDFS的源路徑移動到目標(biāo)路徑
put 將本地文件上傳到HDFS
renameSnapshot 重命名快照
rm 刪除一個文件或目錄
rmdir 刪除空目錄
setfacl 設(shè)置權(quán)限
setfattr 其他信息
setrep 修改副本數(shù)
stat 顯示文件所占塊數(shù)(%b)
tail 顯示文件的最后1kb內(nèi)容到標(biāo)準(zhǔn)輸出
test 某個文件或者目錄是否存在
text 獲取源文件并以文本格式輸出文件
touch 創(chuàng)建一個零長度的文件
touchz 目錄創(chuàng)建一個新文件
truncate 截?cái)?/td>
usage 返回命令的help信息。

輸入 hdfs getconf 查看getconf的usage

image-20201101184223100
  • hdfs getconf -namenodes #查看namenode的節(jié)點(diǎn)名稱
image-20201101184546733
  • hdfs getconf -nnRpcAddresses #查看namenode的RPC地址

    image-20201101184809272

輸入hdfs version查看hsdf的版本信息

image-20201101184949452

2.3 Daemon Command

  • hdfs balancer # 啟動datanode的均衡分布

  • hdfs datanode #查看datanode進(jìn)程

  • hdfs namenode #查看namenode進(jìn)程

    namenode后也可跟參數(shù),具體如下

 hdfs nameNode
                  [-format]      //格式化NameNode
                  [-upgrade]   //在Hadoop升級后,應(yīng)該使用這個命令啟動NameNode
                  [-rollback]    //使用NameNode回滾前一個版本
                  [-finalize]     //刪除文件系統(tǒng)的前一個狀態(tài),這會導(dǎo)致系統(tǒng)不能回滾到前一個zhua
                  [-importCheckpoint]    // 復(fù)制備份checkpoint的狀態(tài)到當(dāng)前checkpoint

至此,hdfs的shell命令算是簡單的過了一遍,有興趣的可以每個命令具體去實(shí)操一下。

文章持續(xù)更新,可以微信搜索「 大數(shù)據(jù)分析師知識分享」第一時間閱讀,回復(fù)【666】獲取大數(shù)據(jù)相關(guān)資料。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容