Hadoop用戶端指令大全

2020-08-16 09:09:32

Hadoop用戶端指令大全

指令風格說明

Hadoop shell可以使用三種不同風格的開頭來使用,其效果基本相同,分爲:

hadoop fs

CDH官方郵件建議Hadoop 1.x版本使用,可以適用於除HDFS系統以外的Local FS、WebHDFS、S3 FS以及其它檔案系統

hdfs dfs

CDH官方郵件建議Hadoop 2.x+版本使用,只能操作HDFS檔案系統

hadoop dfs

目前仍可使用,但不贊成使用

基本格式說明

fs [–config confdir] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]
其中–config:
用於設定 Hadoop 組態檔目錄,預設目錄爲 ${HADOOP_HOME}/etc/hadoop/

COMMAND:
爲各類具體命令,細分爲使用者命令(Hadoop叢集使用者的常用命令
常用如fs/dfs下的各類操作)與管理命令(Hadoop叢集管理員常用的命令,如:datanode)

GENERIC_OPTIONS:
爲多個命令都支援的通用選項(所謂多個命令即dfsadmin, fs, fsck和 job)

COMMAND_OPTIONS:
單獨命令的額外選項

指令詳情

說明:本指令大全以Hadoop CDH版本爲主,主要以hadoop fs的指令風格介紹(其它同理),參考依次以官方英文文件、《Hadoop權威指南》、中文文件、國外論壇、國內論壇降低

fs開頭

1.x指令

cat

功能:將路徑指定檔案的內容輸出到stdout
返回:0成功,1失敗(故可用echo $?檢視返回)
使用方法:hadoop fs -cat URI [URI …]
例:hadoop fs -cat hdfs://host1:port1/file1 hdfs://host2:port2/file2 可以檢視HDFS的file1和file2
例:hadoop fs -cat file:///file3 /user/hadoop/file4 可以檢視Linux本地檔案的file3和file4

checksum

功能:檢視檔案的checksum資訊
使用方法:hadoop fs -checksum URI

chgrp

功能:改變檔案所屬的組(只能由檔案的所有者或者超級使用者執行),使用-R將使改變在目錄結構下遞回進行(超級使用者即執行name node進程的使用者)
使用方法:hadoop fs -chgrp [-R] GROUP URI [URI …]
可選項-R:遞回改變組

chmod

功能:改變檔案的許可權
使用方法:hadoop fs -chmod [-R] <MODE[,MODE]… | OCTALMODE> URI [URI …]
可選項-R:遞回改變許可權

chown

功能:改變檔案的擁有者(命令的使用者必須是超級使用者)
使用方法:hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]
可選項-R:遞回改變組、擁有者

copyFromLocal

功能:從本地上傳檔案至檔案系統
使用方法:hadoop fs -copyFromLocal URI

copyFromLocal

功能:下載至本地
使用方法:hadoop fs -copyToLocal [-ignorecrc] [-crc] URI

copyFromLocal

功能:將檔案從源路徑複製到目標路徑。這個命令允許有多個源路徑,此時目標路徑必須是一個目錄
使用方法:hadoop fs -cp URI [URI …]
例:hadoop fs -cp dir1 dir2 dir3,將會把dir1和2的檔案傳到dir3這個目錄下

du

功能:顯示目錄中所有檔案的大小,或者當只指定一個檔案時,顯示此檔案的大小
使用方法:hadoop fs -du URI [URI …]

dus

功能:顯示檔案的大小(同上,過時但可用)
使用方法:hadoop fs -du URI [URI …]

expunge

功能:清空回收站(在開啓回收站時,檔案被刪除後會進入/trash資料夾下。預設6小時後刪除)
使用方法:hadoop fs -expunge

get

功能:複製檔案到本地檔案系統
使用方法:hadoop fs -get [-ignorecrc] [-crc]
可選項-ignorecrc:也會複製CRC校驗失敗的檔案
-crc:複製檔案以及CRC資訊

getmerge

功能:將一個源目錄下的所有檔案合併爲一個本地檔案
使用方法:hadoop fs -getmerge [addnl]

help

功能:顯示幫助
使用方法:hadoop fs -help

ls

功能:類似Unix ls,可對資料夾使用也可對檔案使用
使用方法:hadoop fs -ls

lsr

功能:ls命令的遞回版本。類似於Unix中的ls -R
使用方法:hadoop fs -lsr

mkdir

功能:接受路徑指定的uri作爲參數,建立這些目錄。其行爲類似於Unix的mkdir -p,它會自動建立路徑中的各級父目錄
使用方法:hadoop fs -mkdir

movefromLocal

功能:將本地檔案上傳至hdfs,並刪除本地檔案
使用方法:dfs -moveFromLocal

mv

功能:1.將檔案從源路徑移動到目標路徑。這個命令允許有多個源路徑,此時目標路徑必須是一個目錄。不允許在不同的檔案系統間移動檔案 2.檔案改名
使用方法:hadoop fs -mv URI [URI …]

put

功能:從本地檔案系統中複製單個或多個源路徑到目標檔案系統。也支援從標準輸入中讀取輸入寫入目標檔案系統
使用方法:hadoop fs -put …

rm

功能:刪除指定的檔案。只刪除非空目錄和檔案
使用方法:hadoop fs -rm URI [URI …]

rmr

功能:rm的遞回版本
使用方法:hadoop fs -rmr URI [URI …]

setrep

功能:改變一個檔案的副本系 本係數
使用方法:hadoop fs -setrep [-R]
可選項-R:遞回所有子路徑副本數

stat

功能:返回指定路徑的統計資訊
使用方法:hadoop fs -stat URI [URI …]

tail

功能:將檔案尾部1K位元組的內容輸出到stdout(預設顯示尾部10行)
使用方法:hadoop fs -tail [-f] URI
可選項-f:根據檔案描述符進行追蹤,當檔案改名或被刪除,追蹤停止

test

功能:檢查檔案
使用方法:hadoop fs -test -[ezd] URI
可選項-e:檢查檔案是否存在。如果存在則返回0
-z:檢查檔案是否是0位元組。如果是則返回0
-d:如果路徑是個目錄,則返回1,否則返回0

text

功能:將原始檔輸出爲文字格式。允許的格式是zip和TextRecordInputStream
使用方法:hadoop fs -text

touchz

功能:建立一個0位元組的空檔案
使用方法:hadoop fs -touchz URI [URI …]

2.x指令

appendToFile

功能:將本地檔案系統中的一個檔案或多個檔案新增到目標檔案系統中,也可以從stdin讀取input檔案新增到目標檔案系統中
用法:hdfs dfs -appendToFile …

count

功能:計算並顯示路徑或檔案的路徑深度、檔案數、總大小
用法:hdfs dfs -count [-q] [-h]
可選項-q:會額外顯示磁碟空間的資訊
-h:會將大小顯示易讀

getfacl

功能:會顯示路徑的ACL(使用者、所屬等資訊)
用法:hdfs dfs -getfattr [-R] -n name | -d [-e en]
可選項-R:遞回
-n:轉存拓展屬性值
-d:所有和路徑相關的拓展屬性值都會被轉存
-e:檢索後編譯

setfacl

功能:設定某路徑的ACL(可以用來設定目錄存取許可權)
用法:hadoop fs -setfacl [-R] [-b |-k -m |-x <acl_spec> ] |[–set <acl_spec> ]
可選項-b:移除除基本ACL外ACL限制
-k:移除預設ACL
-R:遞回
-m:修改ACL規則
-x:刪除某一個ACL

setfattr

功能:設定路徑的額外拓展屬性
用法:hadoop fs -setfattr -n name [-v value] | -x name
可選項-n:額外屬性名
-v:額外屬性值
-x:移除額外屬性

非fs開頭

version

功能:版本資訊,包含編譯時間及校驗碼等資訊
用法:hadoop version

jar

功能:執行jar檔案(使用者可以把他們的Map Reduce程式碼捆綁到jar檔案中,使用這個命令執行)
用法:hadoop jar [mainClass] args…
可以附帶額外的-input -output -mapper及外掛-inputformat等(如-mapper myPythonScript.py即是將該python檔案作爲mapper)

checknative [-a | -h]

功能:檢查本機hadoop和相關庫的可用性,編譯hadoop後用來檢查

distcp

功能:分佈式拷貝,用於大規模叢集內部和叢集之間拷貝的工具,採用Map/Reduce實現檔案分發,拷貝時可用mr指令檢視進程
(相對於一般的shell拷貝,shell拷貝爲單執行緒,拷貝大量數據慢,且不支援叢集拷貝)
用法:hadoop distcp dir1 dir2
(源路徑和目標路徑都需採用絕對路徑;如dir2 不存在,則新建dir2,dir1下檔案全部複製到dir2;如dir2 存在,則目錄dir1被複制到dir2下,形成dir2/dir1結構)
可選項:
(distcp hadoop1.x可選項)
-p[rbugpcax]:保留原始檔的一些狀態

-p[rbugpcax] 子功能
b 塊大小
u 使用者
g
p 許可權
c 校驗型別
a ACL(存取控制)
x XAttr(檔案系統拓展屬性)
t 時間戳(此選項官方文件沒有但部分部落格有,存疑)

(當同時指定了更新-update和-p,則只有當建立新檔案時(判定條件爲檔案大小不同)纔會將保留的狀態同步過去(即不更新的檔案不同步)如果指定了-pa限於acl的許可權,同步過去的檔案也會保留原檔案許可權)

-update:dir2僅更新dir2下相對dir1下發生變化的檔案
-overwrite:保持同樣的目錄結構同時覆蓋原有檔案
(使用這兩個指令後會改變目錄結構:本來是dir2/dir1結構使用後成爲dir2)

-i:1.會比沒有-i保留更多日誌資訊,會保留失敗的日誌(偵錯重要)
2.如果一個map失敗了,會繼續嘗試執行,不會導致整個作業失敗

-log :1.記錄日誌資訊到logdir,並將日誌作爲map的輸出
2.如果一個map失敗了,那麼重新執行指令時上一個日誌不會被保留

-m <num_maps>:指定了拷貝數據時map的最大數目
(如果沒使用-m選項,DistCp會嘗試在排程工作時指定map的數目 爲 min (total_bytes / bytes.per.map, 20 * num_task_trackers), 其中bytes.per.map預設是256MB。
建議對於長時間執行或定期執行的作業,根據源和目標叢集大小、拷貝數量大小以及頻寬調整map的數目)

-f <urilist_uri>:從檔案裡獲得多個原路徑進行拷貝(例:adoop distcp -f srclist dir2)

(distcp hadoop2.x額外可選項)
-delete:刪除dir2中有但dir1沒有的檔案(進垃圾站)

-strategy {dynamic|uniformsize}:複製策略(預設爲un),可改變爲dyn,即DynamicInputFormat 方式(有空可以開個貼文單獨說說)

-bandwidth:可爲每個map指定最大頻寬(使用方法不明,沒google到)

-atomic {-tmp <tmp_dir>}:可通過設定一個臨時檔案路徑將傳輸檔案新增原子性(即檔案先分批儲存至臨時路徑,最後成功組合後儲存進目標路徑,如未成功組合,則刪除該臨時路徑的檔案(要麼全傳,要麼傳失敗什麼都沒有))

-mapredSslConf <ssl_conf_file>:用來指定一個hsftp 協定檔案來對原始檔的安全傳輸屬性進行設定

-async:非同步執行DistCp ,會跟蹤Hadoop Job-id,一旦執行便退出DistCp

archive

功能:建立一個archive文件,一般用於大量小檔案的目錄儲存,減少namenode的消耗
用法:hadoop archive -archiveName NAME *
可選項-archiveName NAME:要建立的檔案的名字
例子:hadoop archive -archiveName test.har -p /foo/bar -r /user/hz

credential

功能:證書的管理
用法:hadoop credential [options]

daemonlog

功能:管理日誌輸出的指令,可檢視日誌水平或設定日誌水平
用法:hadoop daemonlog -getlevel URI | -setlevel URI

classpath

功能:輸出classpath
用法:hadoop classpath [–glob |–jar |-h |–help]
可選項-glob:擴充套件萬用字元
-jar:jar檔案路徑

s3guard

功能:爲Amazon 相關的S3A路徑

trace

功能:檢視和修改Hadoop的跟蹤設定

trace

功能:執行名稱爲CLASSNAME的類
用法:hadoop CLASSNAME

key

功能:用來建立/刪除Hadoop的key
用法:hadoop key [options]

dfsadmin

功能:一些管理員功能(需使用超級使用者執行)
用法:hadoop dfsadmin -report | -safemode <enter | leave | get | wait>
-report:顯示hdfs健康情況
-safemode <enter | leave | get | wait>:進入退出安全模式

fsck

功能:通過相關指令檢查hdfs健康度
用法:hadoop fsck [-…]

fsck 用法參數
-move 破損的檔案移至/lost+found目錄
-delete 刪除破損的檔案
-openforwrite 列印正在開啓寫操作的檔案
-files 列印正在check的檔名
-blocks 列印block報告(需要和-files參數一起使用)
-locations 列印每個block的位置資訊(需要和-files參數一起使用)
-racks 列印位置資訊的網路拓撲圖(需要和-files參數一起使用)

job/pipes

hadoop1.x指令,已被yarn替代

hadoop3.x新增了一些指令,並且有的舊指令增加了額外可選項,有空填一填坑。。。