hadoop命令詳解

thamsyangsw發表於2014-07-18

一、使用者命令
1、archive命令

(1).什麼是Hadoop archives?
Hadoop archives是特殊的檔案格式。一個Hadoop archive對應一個檔案系統目錄。 Hadoop archive的副檔名是*.har。Hadoop archive包含後設資料(形式是_index和_masterindx)和資料檔案(part-*)。_index檔案包含了檔案中的檔案的檔名和位置資訊。

(2).如何建立archive?
用法:hadoop archive -archiveName NAME *
命令選項:
-archiveName NAME 要建立的檔案的名字。
src 原始檔系統的路徑名。
dest 儲存檔案檔案的目標目錄。
範例:
例1.將/user/hadoop/dir1和/user/hadoop/dir2歸檔到/user/zoo/檔案系統目錄下–/user/zoo/foo.har。
hadoop@ubuntu:~/ hadoop archive -archiveName foo.har /user/hadoop/dir1 /user/hadoop/dir2 /user/zoo/
當建立archive時,原始檔foo.har不會被更改或刪除。

(3).如何檢視archives中的檔案?
archive作為檔案系統層暴露給外界。所以所有的fs shell命令都能在archive上執行,但是要使用不同的URI。另外,archive是不可改變的。所以建立、重新命名和刪除都會返回錯誤。Hadoop Archives的URI是har://scheme-hostname:port/archivepath/fileinarchive。
如果沒提供scheme-hostname,它會使用預設的檔案系統。這種情況下URI是這種形式har:///archivepath/fileinarchive。
範例:
例1.archive的輸入是/dir,該dir目錄包含檔案filea和fileb,現把/dir歸檔到/user/hadoop/foo.bar。
hadoop@ubuntu:~/ hadoop archive -archiveName foo.har /dir /user/hadoop
例2.獲得建立的archive中的檔案列表
hadoop@ubuntu:~/hadoop dfs -lsr har:///user/hadoop/foo.har
例3.檢視archive中的filea檔案
hadoop@ubuntu:~/hadoop dfs -cat har:///user/hadoop/foo.har/dir/filea

2、distcp
說明:用於叢集內部或者叢集之間複製資料的常用命令(顧名思義: dist即分散式,分散式複製是也。)。
用法:hadoop distcp [選項] src_url dest_url 
命令選項:
-m 表示啟用多少map
-delete 刪除已經存在的目標檔案,不會刪除原始檔。這個刪除是透過FS Shell實現的。所以如果垃圾回收機制啟動的話,刪除的目標檔案會進入trash。
-i 忽略失敗。這個選項會比預設情況提供關於複製的更精確的統計,同時它還將保留失敗複製操作的日誌,這些日誌資訊可以用於除錯。最後,如果一個map失敗了,但並沒完成所有分塊任務的嘗試,這不會導致整個作業的失敗。
-overwrite 覆蓋目標。如果一個map失敗並且沒有使用-i選項,不僅僅那些複製失敗的檔案,這個分塊任務中的所有檔案都會被重新複製。 所以這就是為什麼要使用-i引數。
範例:
例1.
hadoop@ubuntu:~/ hadoop distcp "hdfs://A:8020/user/foo/bar" "hdfs://B:8020/user/foo/baz"

3、fs
說明:執行一個常規的檔案系統客戶端。
用法:hadoop fs [GENERIC_OPTIONS] [COMMAND_OPTIONS]
各種命令選項可以參考HDFS Shell指南。

4、fsck
說明:用來檢查整個檔案系統的健康狀況,但是要注意它不會主動恢復備份缺失的block,這個是由NameNode單獨的執行緒非同步處理的。
用法:hadoop fsck [GENERIC_OPTIONS] [-move|-delete|-openforwrite] [-files [-blocks [-locations | -racks]]]
引數選項:
檢查這個目錄中的檔案是否完整
-move 破損的檔案移至/lost+found目錄
-delete 刪除破損的檔案
-openforwrite 列印正在開啟寫操作的檔案
-files 列印正在check的檔名
-blocks 列印block報告(需要和-files引數一起使用)
-locations 列印每個block的位置資訊(需要和-files引數一起使用)
-racks 列印位置資訊的網路拓撲圖(需要和-files引數一起使用)
範例:
例1.
hadoop@ubuntu:~/hadoop-1.1.1/bin$ hadoop fsck /
Warning: $HADOOP_HOME is deprecated.

FSCK started by hadoop from /192.168.11.156 for path / at Sat Dec 29 19:33:40 PST 2012
.Status: HEALTHY
Total size:    4 B
Total dirs:    9
Total files:   1
Total blocks (validated):      1 (avg. block size 4 B)
Minimally replicated blocks:   1 (100.0 %)
Over-replicated blocks:        0 (0.0 %)
Under-replicated blocks:       0 (0.0 %)
Mis-replicated blocks:         0 (0.0 %)
Default replication factor:    1 #預設的備份引數1
Average block replication:     1.0
Corrupt blocks:                0 #破損的block數0
Missing replicas:              0 (0.0 %)
Number of data-nodes:          1
Number of racks:               1
FSCK ended at Sat Dec 29 19:33:40 PST 2012 in 4 milliseconds


The filesystem under path '/' is HEALTHY
hadoop@ubuntu:~/hadoop-1.1.1/bin$

5、jar
說明:執行jar檔案。使用者可以把他們的Map Reduce程式碼捆綁到jar檔案中,使用這個命令執行。
用法:hadoop jar [mainClass] args…
範例:
例1.在叢集上執行Map Reduce程式,以WordCount程式為例
hadoop jar /home/hadoop/hadoop-1.1.1/hadoop-examples.jar wordcount input output
描述:
hadoop jar:執行jar命令
/home/hadoop/hadoop-1.1.1/hadoop-examples.jar: WordCount所在jar
wordcount:程式主類名
input output:輸入輸出資料夾

6、job
說明:用於和Map Reduce作業互動和命令。
用法:hadoop job [GENERIC_OPTIONS] [-submit ] | [-status ] | [-counter ] | [-kill ] | [-events ] | [-history [all] ] | [-list [all]] | [-kill-task ] | [-fail-task ]
引數選項:
-submit :提交作業
-status :列印map和reduce完成百分比和所有計數器。
-counter :列印計數器的值。
-kill :殺死指定作業。
-events :列印給定範圍內jobtracker接收到的事件細節。
-history [all] :-history 列印作業的細節、失敗及被殺死原因的細節。更多的關於一個作業的細節比如成功的任務,做過的任務嘗試等資訊可以透過指定[all]選項檢視。
-list [all]:-list all顯示所有作業。-list只顯示將要完成的作業。
-kill-task :殺死任務。被殺死的任務不會不利於失敗嘗試。
-fail-task :使任務失敗。被失敗的任務會對失敗嘗試不利。

7、pipes
說明:執行pipes作業。
用法:hadoop pipes [-conf ] [-jobconf , , ...] [-input ] [-output ] [-jar ] [-inputformat ] [-map ] [-partitioner ] [-reduce ] [-writer ] [-program ] [-reduces ]
引數選項:
-conf :作業的配置
-jobconf , , …:增加/覆蓋作業的配置項
-input :輸入目錄
-output :輸出目錄
-jar :Jar檔名
-inputformat :InputFormat類
-map :Java Map類
-partitioner :Java Partitioner
-reduce :Java Reduce類
-writer :Java RecordWriter
-program :可執行程式的URI
-reduces :reduce個數

8、version
說明:列印版本資訊。
用法:hadoop version

9、CLASSNAME
說明:hadoop指令碼可用於呼叫任何類。
用法:hadoop CLASSNAME
描述:執行名字為CLASSNAME的類。

二、管理命令
hadoop叢集管理員常用的命令。

1、balancer
說明:執行叢集平衡工具。管理員可以簡單的按Ctrl-C來停止平衡過程。
用法:hadoop balancer [-threshold ]
引數選項:
-threshold :磁碟容量的百分比。這會覆蓋預設的閥值。

2、daemonlog
說明:獲取或設定每個守護程式的日誌級別。
用法:hadoop daemonlog -getlevel
用法:hadoop daemonlog -setlevel
引數選項:
-getlevel :列印執行在的守護程式的日誌級別。這個命令內部會連線
-setlevel :設定執行在的守護程式的日誌級別。這個命令內部會連線

3、datanode
說明:執行一個HDFS的datanode。
用法:hadoop datanode [-rollback]
引數選項:
-rollback:將datanode回滾到前一個版本。這需要在停止datanode,分發老的hadoop版本之後使用。

4、dfsadmin
說明:執行一個HDFS的dfsadmin客戶端。
用法:hadoop dfsadmin [GENERIC_OPTIONS] [-report] [-safemode enter | leave | get | wait] [-refreshNodes] [-finalizeUpgrade] [-upgradeProgress status | details | force] [-metasave filename] [-setQuota ...] [-clrQuota ...] [-help [cmd]]
引數選項:
-report:報告檔案系統的基本資訊和統計資訊。

5、jobtracker
說明:執行MapReduce job Tracker節點。
用法:hadoop jobtracker

6、namenode
說明:執行namenode。
用法:hadoop namenode [-format] | [-upgrade] | [-rollback] | [-finalize] | [-importCheckpoint]
引數選項:
-format:格式化namenode。它啟動namenode,格式化namenode,之後關閉namenode。
-upgrade:分發新版本的hadoop後,namenode應以upgrade選項啟動。
-rollback:將namenode回滾到前一版本。這個選項要在停止叢集,分發老的hadoop版本後使用。
-finalize:finalize會刪除檔案系統的前一狀態。最近的升級會被持久化,rollback選項將再不可用,升級終結操作之後,它會停掉namenode。
-importCheckpoint 從檢查點目錄裝載映象並儲存到當前檢查點目錄,檢查點目錄由fs.checkpoint.dir指定。

7、secondarynamenode
說明:執行HDFS的secondary namenode。
用法:hadoop secondarynamenode [-checkpoint [force]] | [-geteditsize]
引數選項:
-checkpoint [force]:如果EditLog的大小 >= fs.checkpoint.size,啟動Secondary namenode的檢查點過程。 如果使用了-force,將不考慮EditLog的大小。
-geteditsize:列印EditLog大小。

8、tasktracker
說明:執行MapReduce的task Tracker節點。
用法:hadoop tasktracker

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26613085/viewspace-1222265/,如需轉載,請註明出處,否則將追究法律責任。