HDFS 命令指南

概觀

所有 HDFS 命令均由 bin/hdfs 腳本呼叫。執行 hdfs 腳本而無任何引數會印出所有命令的說明。

用法:hdfs [SHELL_OPTIONS] COMMAND [GENERIC_OPTIONS] [COMMAND_OPTIONS]

Hadoop 有個選項剖析架構,用於剖析一般選項以及執行類別。

COMMAND_OPTIONS 說明
SHELL_OPTIONS 常見的 shell 選項組。這些選項已在 命令手冊 頁面中說明。
GENERIC_OPTIONS 多個命令支援的常見選項組。請參閱 Hadoop 命令手冊 以取得更多資訊。
COMMAND COMMAND_OPTIONS 以下各節說明各種命令及其選項。這些命令已分組為 使用者命令管理命令

使用者命令

Hadoop 集群使用者的有用命令。

classpath

用法:hdfs classpath [--glob |--jar <path> |-h |--help]

COMMAND_OPTION 說明
--glob 展開萬用字元
--jar path 將類別路徑寫入名為 path 的 jar 中的清單
-h, --help 列印說明

列印取得 Hadoop jar 和所需函式庫所需的類別路徑。如果未帶引數呼叫,則會列印由命令指令碼設定的類別路徑,其中可能包含類別路徑項目中的萬用字元。其他選項會在展開萬用字元後列印類別路徑,或將類別路徑寫入 jar 檔案的清單中。後者適用於無法使用萬用字元且展開的類別路徑超過最大支援命令列長度的環境。

dfs

用法:hdfs dfs [COMMAND [COMMAND_OPTIONS]]

在 Hadoop 中支援的檔案系統上執行檔案系統命令。可在 檔案系統 Shell 指南 中找到各種 COMMAND_OPTIONS。

envvars

用法:hdfs envvars

顯示已計算的 Hadoop 環境變數。

fetchdt

用法:hdfs fetchdt <opts> <token_file_path>

COMMAND_OPTION 說明
--webservice NN_Url 與 NN 聯繫的網址(以 http 或 https 開頭)
--renewer name 委派權杖更新者的名稱
--cancel 取消委派權杖
--renew 更新委派權杖。必須使用 –renewer name 選項取得委派權杖。
--print 列印委派權杖
token_file_path 將權杖儲存到的檔案路徑。

從 NameNode 取得委派權杖。請參閱 fetchdt 以取得更多資訊。

fsck

用法

   hdfs fsck <path>
          [-list-corruptfileblocks |
          [-move | -delete | -openforwrite]
          [-files [-blocks [-locations | -racks | -replicaDetails | -upgradedomains]]]
          [-includeSnapshots] [-showprogress]
          [-storagepolicies] [-maintenance]
          [-blockId <blk_Id>] [-replicate]
COMMAND_OPTION 說明
path 從此路徑開始檢查。
-delete 刪除損毀的檔案。
-files 列印出正在檢查的檔案。
-files -blocks 列印出區塊報告
-files -blocks -locations 列印出每個區塊的位置。
-files -blocks -racks 列印出資料節點位置的網路拓撲。
-files -blocks -replicaDetails 列印出每個副本的詳細資料。
-files -blocks -upgradedomains 列印出每個區塊的升級網域。
-includeSnapshots 如果給定的路徑表示可建立快照的目錄,或其下有可建立快照的目錄,則包含快照資料。
-list-corruptfileblocks 列印出遺失區塊及其所屬檔案的清單。
-move 將損毀的檔案移至 /lost+found。
-openforwrite 列印出已開啟可寫入的檔案。
-showprogress 已棄用。不論是否使用此開關,每處理 100 個檔案就會印出一個點。
-storagepolicies 列印出區塊的儲存原則摘要。
-maintenance 列印出維護狀態節點的詳細資料。
-blockId 列印出區塊的資訊。
-replicate 啟動複製工作,讓複製錯誤的區塊符合區塊配置原則。

執行 HDFS 檔案系統檢查工具。請參閱 fsck 以取得更多資訊。

getconf

用法

   hdfs getconf -namenodes
   hdfs getconf -secondaryNameNodes
   hdfs getconf -backupNodes
   hdfs getconf -journalNodes
   hdfs getconf -includeFile
   hdfs getconf -excludeFile
   hdfs getconf -nnRpcAddresses
   hdfs getconf -confKey [key]
COMMAND_OPTION 說明
-namenodes 取得叢集中的名稱節點清單。
-secondaryNameNodes 取得叢集中的次要名稱節點清單。
-backupNodes 取得叢集中的備份節點清單。
-journalNodes 取得叢集中的日誌節點清單。
-includeFile 取得定義可加入叢集的資料節點的包含檔案路徑。
-excludeFile 取得定義需要停用的資料節點的排除檔案路徑。
-nnRpcAddresses 取得名稱節點 rpc 地址
-confKey [key] 從組態取得特定金鑰

從組態目錄取得組態資訊,進行後處理。

groups

用法:hdfs groups [username ...]

傳回一個或多個使用者的群組資訊。

httpfs

用法:hdfs httpfs

執行 HttpFS 伺服器,即 HDFS HTTP Gateway。

lsSnapshottableDir

用法:hdfs lsSnapshottableDir [-help]

COMMAND_OPTION 說明
-help 列印說明

取得可建立快照目錄的清單。當以超級使用者身分執行時,會傳回所有可建立快照的目錄。否則,會傳回目前使用者擁有的目錄。

jmxget

用法:hdfs jmxget [-localVM ConnectorURL | -port port | -server mbeanserver | -service service]

COMMAND_OPTION 說明
-help 列印說明
-localVM ConnectorURL 連線至同一台電腦上的 VM
-port MBean 伺服器埠 指定 MBean 伺服器埠,如果遺漏,它將嘗試連線至同一 VM 中的 MBean 伺服器
-server 指定 MBean 伺服器(預設為 localhost)
-service NameNode|DataNode 指定 jmx 服務。預設為 NameNode。

從服務中傾印 JMX 資訊。

oev

用法:hdfs oev [OPTIONS] -i INPUT_FILE -o OUTPUT_FILE

必要的命令列引數

COMMAND_OPTION 說明
-i,--inputFile arg 要處理的編輯檔案,xml(不區分大小寫)副檔名表示 XML 格式,任何其他檔案名稱表示二進位格式
-o,--outputFile arg 輸出檔案名稱。如果指定檔案存在,它將被覆寫,檔案格式由 -p 選項決定

選擇性的命令列引數

COMMAND_OPTION 說明
-f,--fix-txids 重新編號輸入中的交易 ID,以便沒有任何間隙或無效的交易 ID。
-h,--help 顯示用法資訊並結束
-r,--recover 在讀取二進位編輯記錄時,使用復原模式。這將讓您有機會略過編輯記錄中損毀的部分。
-p,--processor arg 選擇要對影像檔案套用的處理器類型,目前支援的處理器有:binary(Hadoop 使用的原生二進位格式)、xml(預設,XML 格式)、stats(列印有關編輯檔案的統計資料)
-v,--verbose 更詳細的輸出,列印輸入和輸出檔案名稱,對於寫入檔案的處理器,也會輸出到螢幕。對於大型影像檔案,這將大幅增加處理時間(預設為 false)。

Hadoop 離線編輯檢視器。更多資訊請參閱 離線編輯檢視器指南

oiv

用法:hdfs oiv [OPTIONS] -i INPUT_FILE

必要的命令列引數

COMMAND_OPTION 說明
-i|--inputFile 輸入檔案 指定要處理的輸入 fsimage 檔案(或 XML 檔案,如果使用 ReverseXML 處理器)。

選擇性的命令列引數

COMMAND_OPTION 說明
-o,--outputFile 輸出檔案 指定輸出檔案名稱,如果指定的輸出處理器產生一個檔案。如果指定的檔案已存在,它將被靜默覆寫。(預設輸出到 stdout)如果輸入檔案是 XML 檔案,它也會建立一個 <outputFile>.md5。
-p,--processor 處理器 指定要套用於影像檔案的影像處理器。目前有效的選項為 Web(預設)、XMLDelimitedFileDistributionReverseXML
-addr address 指定要監聽的位址 (host:port)。(預設為 localhost:5978)。此選項與 Web 處理器搭配使用。
-maxSize size 指定要分析的檔案大小範圍 [0, maxSize],單位為位元組 (預設為 128GB)。此選項與 FileDistribution 處理器搭配使用。
-step size 指定分佈的細緻度,單位為位元組 (預設為 2MB)。此選項與 FileDistribution 處理器搭配使用。
-format 將輸出結果格式化為人類可讀的形式,而非位元組數目。(預設為 false)。此選項與 FileDistribution 處理器搭配使用。
-delimiter arg 與 Delimited 處理器搭配使用的分隔字串。
-t,--temp temporary dir 使用暫存目錄快取中間結果以產生 Delimited 輸出。如果未設定,Delimited 處理器會在輸出文字之前在記憶體中建構名稱空間。
-h,--help 顯示工具使用方式和說明資訊,然後結束。

Hadoop 2.4 以上版本的 Hadoop 影像檔案離線影像檢視器。請參閱 離線影像檢視器指南 以取得更多資訊。

oiv_legacy

用法:hdfs oiv_legacy [OPTIONS] -i INPUT_FILE -o OUTPUT_FILE

COMMAND_OPTION 說明
-i,--inputFile input file 指定要處理的輸入 fsimage 檔案。
-o,--outputFile 輸出檔案 指定輸出檔名,如果指定的輸出處理器會產生一個檔名。如果指定的檔案已存在,系統會在不提示的情況下覆寫該檔案。

選擇性的命令列引數

COMMAND_OPTION 說明
-p|--processor processor 指定要套用於影像檔案的影像處理器。有效的選項為 Ls (預設)、XML、Delimited、Indented、FileDistribution 和 NameDistribution。
-maxSize size 指定要分析的檔案大小範圍 [0, maxSize],單位為位元組 (預設為 128GB)。此選項與 FileDistribution 處理器搭配使用。
-step size 指定分佈的細緻度,單位為位元組 (預設為 2MB)。此選項與 FileDistribution 處理器搭配使用。
-format 將輸出結果格式化為人類可讀的形式,而非位元組數目。(預設為 false)。此選項與 FileDistribution 處理器搭配使用。
-skipBlocks 不列舉檔案中的個別區塊。這可能會節省處理時間和輸出檔案空間,特別是在檔案非常大的名稱空間中。Ls 處理器會讀取區塊以正確判斷檔案大小,並忽略此選項。
-printToScreen 將處理器的輸出導向主控台和指定的檔案。在非常大的名稱空間中,這可能會將處理時間增加一個數量級。
-delimiter arg 與 Delimited 處理器搭配使用時,會將預設的 tab 分隔符號替換為 arg 指定的字串。
-h|--help 顯示工具使用方式和說明資訊,然後結束。

適用於舊版 Hadoop 的 Hadoop 離線影像檢視器。請參閱 oiv_legacy 指令 以取得更多資訊。

snapshotDiff

用法:hdfs snapshotDiff <路徑> <fromSnapshot> <toSnapshot>

判斷 HDFS 快照之間的差異。有關更多資訊,請參閱 HDFS 快照文件

version

用法:hdfs version

列印版本。

管理命令

對 Hadoop 群集管理員有用的命令。

balancer

用法

    hdfs balancer
          [-policy <policy>]
          [-threshold <threshold>]
          [-exclude [-f <hosts-file> | <comma-separated list of hosts>]]
          [-include [-f <hosts-file> | <comma-separated list of hosts>]]
          [-source [-f <hosts-file> | <comma-separated list of hosts>]]
          [-blockpools <comma-separated list of blockpool ids>]
          [-idleiterations <idleiterations>]
          [-runDuringUpgrade]
          [-asService]
COMMAND_OPTION 說明
-policy <政策> datanode (預設):如果每個資料節點都平衡,則群集平衡。
blockpool:如果每個資料節點中的每個區塊池都平衡,則群集平衡。
-threshold <閾值> 磁碟容量的百分比。這會覆寫預設閾值。
-exclude -f <主機檔案> | <逗號分隔的主機清單> 排除指定的資料節點,使其不會被平衡器平衡。
-include -f <主機檔案> | <逗號分隔的主機清單> 僅包含由平衡器平衡的指定資料節點。
-source -f <主機檔案> | <逗號分隔的主機清單> 僅選取指定的資料節點作為來源節點。
-blockpools <逗號分隔的區塊池 ID 清單> 平衡器只會在包含在此清單中的區塊池上執行。
-idleiterations <反覆運算次數> 退出前的最大閒置反覆運算次數。這會覆寫預設的閒置反覆運算次數 (5)。
-runDuringUpgrade 是否在進行 HDFS 升級期間執行平衡器。這通常是不需要的,因為它不會影響使用過度機器上的使用空間。
-asService 將平衡器作為長期執行服務執行。
-h|--help 顯示工具使用方式和說明資訊,然後結束。

執行群集平衡工具程式。管理員可以簡單地按 Ctrl-C 來停止重新平衡程序。有關更多詳細資訊,請參閱 平衡器

請注意,blockpool 政策比 datanode 政策更嚴格。

除了上述命令選項之外,從 2.7.0 開始引入了固定功能,以防止某些複本被平衡器/移動器移動。此固定功能在預設情況下已停用,且可以透過設定屬性「dfs.datanode.block-pinning.enabled」來啟用。啟用時,此功能只會影響寫入在 create() 呼叫中指定的偏好節點的區塊。當我們想要維護資料區域性時,此功能非常有用,例如 HBase 區域伺服器等應用程式。

如果您想要將 Balancer 作為長期執行的服務執行,請使用守護程式模式,並使用 -asService 參數啟動 Balancer。您可以使用下列指令執行此動作:hdfs --daemon start balancer -asService,或僅使用 sbin/start-balancer.sh 腳本,並加上 -asService 參數。

cacheadmin

用法

hdfs cacheadmin [-addDirective -path <path> -pool <pool-name> [-force] [-replication <replication>] [-ttl <time-to-live>]]
hdfs cacheadmin [-modifyDirective -id <id> [-path <path>] [-force] [-replication <replication>] [-pool <pool-name>] [-ttl <time-to-live>]]
hdfs cacheadmin [-listDirectives [-stats] [-path <path>] [-pool <pool>] [-id <id>]]
hdfs cacheadmin [-removeDirective <id>]
hdfs cacheadmin [-removeDirectives -path <path>]
hdfs cacheadmin [-addPool <name> [-owner <owner>] [-group <group>] [-mode <mode>] [-limit <limit>] [-maxTtl <maxTtl>]]
hdfs cacheadmin [-modifyPool <name> [-owner <owner>] [-group <group>] [-mode <mode>] [-limit <limit>] [-maxTtl <maxTtl>]]
hdfs cacheadmin [-removePool <name>]
hdfs cacheadmin [-listPools [-stats] [<name>]]
hdfs cacheadmin [-help <command-name>]

請參閱 HDFS 快取管理文件 以取得更多資訊。

crypto

用法

  hdfs crypto -createZone -keyName <keyName> -path <path>
  hdfs crypto -listZones
  hdfs crypto -provisionTrash -path <path>
  hdfs crypto -help <command-name>

請參閱 HDFS 透明加密文件 以取得更多資訊。

datanode

用法:hdfs datanode [-regular | -rollback | -rollingupgrade rollback]

COMMAND_OPTION 說明
-regular 一般資料節點啟動(預設)。
-rollback 將資料節點回滾至前一版本。這應在停止資料節點並散發舊的 Hadoop 版本後使用。
-rollingupgrade rollback 回滾滾動升級作業。

執行 HDFS 資料節點。

dfsadmin

用法

    hdfs dfsadmin [-report [-live] [-dead] [-decommissioning] [-enteringmaintenance] [-inmaintenance] [-slownodes]]
    hdfs dfsadmin [-safemode enter | leave | get | wait | forceExit]
    hdfs dfsadmin [-saveNamespace [-beforeShutdown]]
    hdfs dfsadmin [-rollEdits]
    hdfs dfsadmin [-restoreFailedStorage true |false |check]
    hdfs dfsadmin [-refreshNodes]
    hdfs dfsadmin [-setQuota <quota> <dirname>...<dirname>]
    hdfs dfsadmin [-clrQuota <dirname>...<dirname>]
    hdfs dfsadmin [-setSpaceQuota <quota> [-storageType <storagetype>] <dirname>...<dirname>]
    hdfs dfsadmin [-clrSpaceQuota [-storageType <storagetype>] <dirname>...<dirname>]
    hdfs dfsadmin [-finalizeUpgrade]
    hdfs dfsadmin [-rollingUpgrade [<query> |<prepare> |<finalize>]]
    hdfs dfsadmin [-upgrade [query | finalize]
    hdfs dfsadmin [-refreshServiceAcl]
    hdfs dfsadmin [-refreshUserToGroupsMappings]
    hdfs dfsadmin [-refreshSuperUserGroupsConfiguration]
    hdfs dfsadmin [-refreshCallQueue]
    hdfs dfsadmin [-refresh <host:ipc_port> <key> [arg1..argn]]
    hdfs dfsadmin [-reconfig <namenode|datanode> <host:ipc_port|livenodes> <start |status |properties>]
    hdfs dfsadmin [-printTopology]
    hdfs dfsadmin [-refreshNamenodes datanodehost:port]
    hdfs dfsadmin [-getVolumeReport datanodehost:port]
    hdfs dfsadmin [-deleteBlockPool datanode-host:port blockpoolId [force]]
    hdfs dfsadmin [-setBalancerBandwidth <bandwidth in bytes per second>]
    hdfs dfsadmin [-getBalancerBandwidth <datanode_host:ipc_port>]
    hdfs dfsadmin [-fetchImage <local directory>]
    hdfs dfsadmin [-allowSnapshot <snapshotDir>]
    hdfs dfsadmin [-disallowSnapshot <snapshotDir>]
    hdfs dfsadmin [-shutdownDatanode <datanode_host:ipc_port> [upgrade]]
    hdfs dfsadmin [-evictWriters <datanode_host:ipc_port>]
    hdfs dfsadmin [-getDatanodeInfo <datanode_host:ipc_port>]
    hdfs dfsadmin [-metasave filename]
    hdfs dfsadmin [-triggerBlockReport [-incremental] <datanode_host:ipc_port> [-namenode <namenode_host:ipc_port>]]
    hdfs dfsadmin [-listOpenFiles [-blockingDecommission] [-path <path>]]
    hdfs dfsadmin [-help [cmd]]
COMMAND_OPTION 說明
-report [-live] [-dead] [-decommissioning] [-enteringmaintenance] [-inmaintenance] [-slownodes] 報告基本檔案系統資訊和統計資料,dfs 用法可能與「du」用法不同,因為它會衡量所有 DN 上複寫、檢查碼、快照等所使用的原始空間。可使用選用旗標來篩選顯示的資料節點清單。篩選器依據 DN 狀態(例如:live、dead、decommissioning)或 DN 的性質(例如:slow nodes - 延遲時間比其對等節點長的節點)。
-safemode enter|leave|get|wait|forceExit 安全模式維護指令。安全模式是 NameNode 的一種狀態,其中它
1. 不接受對名稱空間的變更(唯讀)
2. 不會複寫或刪除區塊。
NameNode 啟動時會自動進入安全模式,並在設定的區塊最小百分比符合最小複寫條件時自動離開安全模式。如果 NameNode 偵測到任何異常,它會持續處於安全模式,直到問題解決為止。如果該異常是蓄意行為的結果,則管理員可以使用 -safemode forceExit 退出安全模式。可能需要 forceExit 的情況包括
1. NameNode 的元資料不一致。如果 NameNode 偵測到元資料已在頻外修改,且可能造成資料遺失,則 NameNode 會進入 forceExit 狀態。此時,使用者可以重新啟動 NameNode,並使用正確的元資料檔案,或強制退出(如果資料遺失是可以接受的)。
2. 回滾會導致元資料被取代,而且很少會觸發 NameNode 的安全模式強制退出狀態。在這種情況下,您可以繼續執行 -safemode forceExit。
安全模式也可以手動進入,但之後也必須手動關閉。
-saveNamespace [-beforeShutdown] 將目前命名空間儲存至儲存目錄,並重設編輯記錄。需要安全模式。如果指定「beforeShutdown」選項,NameNode 只有在某個時間範圍內(可設定的檢查點週期數)未執行任何檢查點時,才會執行檢查點。這通常用於在關閉 NameNode 之前,以防止 fsimage/editlog 可能損毀。
-rollEdits 在 active NameNode 上轉動編輯記錄。
-restoreFailedStorage true|false|check 此選項將開啟/關閉自動嘗試復原失敗的儲存複本。如果失敗的儲存再度可用,系統會在檢查點期間嘗試復原編輯記錄和/或 fsimage。「check」選項將傳回目前的設定。
-refreshNodes 重新讀取主機和排除檔案,以更新允許連線到 NameNode 的資料節點,以及應該停用或重新啟用的資料節點。
-setQuota <quota> <dirname>…<dirname> 請參閱 HDFS 配額指南 以取得詳細資訊。
-clrQuota <dirname>…<dirname> 請參閱 HDFS 配額指南 以取得詳細資訊。
-setSpaceQuota <quota> [-storageType <storagetype>] <dirname>…<dirname> 請參閱 HDFS 配額指南 以取得詳細資訊。
-clrSpaceQuota [-storageType <storagetype>] <dirname>…<dirname> 請參閱 HDFS 配額指南 以取得詳細資訊。
-finalizeUpgrade 完成 HDFS 升級。資料節點會刪除其先前版本的作業目錄,接著 NameNode 也會執行相同的動作。這會完成升級程序。
-rollingUpgrade [<query>|<prepare>|<finalize>] 請參閱 滾動升級文件 以取得詳細資訊。
-upgrade query|finalize 查詢目前的升級狀態。
完成 HDFS 升級(等同於 -finalizeUpgrade)。
-refreshServiceAcl 重新載入服務層級授權政策檔案。
-refreshUserToGroupsMappings 重新整理使用者對群組的對應。
-refreshSuperUserGroupsConfiguration 重新整理超級使用者代理群組對應
-refreshCallQueue 從設定檔重新載入呼叫佇列。
-refresh <host:ipc_port> <key> [arg1..argn] 觸發 <key> 在 <host:ipc_port> 上指定資源的執行時間重新整理。所有其他參數都會在之後傳送到主機。
-reconfig <datanode |namenode> <host:ipc_port|livenodes> <start|status|properties> 開始重新設定或取得正在進行的重新設定狀態,或取得可重新設定的屬性清單。第二個參數指定節點類型。第三個參數指定主機地址。對於開始或狀態,datanode 支援 livenodes 作為第三個參數,這會在所有實際的 datanode 上開始或擷取重新設定。
-printTopology 列印 Namenode 回報的機架及其節點的樹狀結構
-refreshNamenodes datanodehost:port 對於給定的 datanode,重新載入設定檔、停止提供已移除的區塊池,並開始提供新的區塊池。
-getVolumeReport datanodehost:port 對於給定的 datanode,取得磁碟區報告。
-deleteBlockPool datanode-host:port blockpoolId [force] 如果傳遞 force,給定 datanode 上給定區塊池 ID 的區塊池目錄會連同其內容一起刪除,否則只有在目錄為空時才會刪除。如果 datanode 仍提供區塊池,命令會失敗。請參閱 refreshNamenodes 以關閉 datanode 上的區塊池服務。
-setBalancerBandwidth <每秒位元組數的頻寬> 變更 HDFS 區塊平衡期間每個 datanode 使用的網路頻寬。<頻寬> 是每個 datanode 將使用的每秒最大位元組數。此值會覆寫 dfs.datanode.balance.bandwidthPerSec 參數。注意:新值不會持續存在於 DataNode 上。
-getBalancerBandwidth <datanode_host:ipc_port> 取得給定 datanode 的網路頻寬(每秒位元組數)。這是 HDFS 區塊平衡期間 datanode 使用的最大網路頻寬。
-fetchImage <本機目錄> 從 NameNode 下載最新的 fsimage,並將其儲存在指定的本機目錄中。
-allowSnapshot <快照目錄> 允許建立目錄的快照。如果作業順利完成,目錄就會變成可建立快照。請參閱 HDFS 快照文件 以取得更多資訊。
-disallowSnapshot <快照目錄> 不允許建立目錄的快照。在不允許建立快照之前,必須刪除目錄的所有快照。請參閱 HDFS 快照文件 以取得更多資訊。
-shutdownDatanode <datanode_host:ipc_port> [upgrade] 提交給定資料節點的關閉請求。有關詳細資訊,請參閱 Rolling Upgrade 文件
-evictWriters <datanode_host:ipc_port> 讓資料節點驅逐所有正在寫入區塊的用戶端。如果因寫入速度過慢而導致停用,這項功能會很有用。
-getDatanodeInfo <datanode_host:ipc_port> 取得給定資料節點的資訊。有關詳細資訊,請參閱 Rolling Upgrade 文件
-metasave 檔名 將 NameNode 的主要資料結構儲存到 hadoop.log.dir 屬性指定的目錄中的 檔名。如果 檔名 存在,將會被覆寫。檔名 將包含下列每一項的一行:
1. 與 NameNode 進行心跳通訊的資料節點
2. 等待複製的區塊
3. 目前正在複製的區塊
4. 等待刪除的區塊
-triggerBlockReport [-incremental] <datanode_host:ipc_port> [-namenode <namenode_host:ipc_port>] 觸發給定資料節點的區塊報告。如果指定「增量」,則會是增量報告,否則會是完整區塊報告。如果給定「-namenode <namenode_host:ipc_port>」,則只會將區塊報告傳送至指定的 NameNode。
-listOpenFiles [-blockingDecommission] [-path <path>] 列出 NameNode 目前管理的所有開啟檔案,以及存取這些檔案的用戶端名稱和用戶端電腦。開啟檔案清單會依據給定的類型和路徑進行篩選。如果您只想列出會阻擋資料節點停用的開啟檔案,請加入 -blockingDecommission 選項。
-help [cmd] 顯示給定指令的說明,如果未指定任何指令,則會顯示所有指令的說明。

執行 HDFS dfsadmin 用戶端。

dfsrouter

用法:hdfs dfsrouter

執行 DFS 路由器。有關更多資訊,請參閱 路由器

dfsrouteradmin

用法

  hdfs dfsrouteradmin
      [-add <source> <nameservice1, nameservice2, ...> <destination> [-readonly] [-faulttolerant] [-order HASH|LOCAL|RANDOM|HASH_ALL] -owner <owner> -group <group> -mode <mode>]
      [-update <source> [<nameservice1, nameservice2, ...> <destination>] [-readonly true|false] [-faulttolerant true|false] [-order HASH|LOCAL|RANDOM|HASH_ALL] -owner <owner> -group <group> -mode <mode>]
      [-rm <source>]
      [-ls [-d] <path>]
      [-getDestination <path>]
      [-setQuota <path> -nsQuota <nsQuota> -ssQuota <quota in bytes or quota size string>]
      [-setStorageTypeQuota <path> -storageType <storage type> <quota in bytes or quota size string>]
      [-clrQuota <path>]
      [-clrStorageTypeQuota <path>]
      [-safemode enter | leave | get]
      [-nameservice disable | enable <nameservice>]
      [-getDisabledNameservices]
      [-refresh]
      [-refreshRouterArgs <host:ipc_port> <key> [arg1..argn]]
      [-refreshSuperUserGroupsConfiguration]
      [-refreshCallQueue]
COMMAND_OPTION 說明
-add 來源 名稱服務 目的地 新增掛載表條目,或在條目已存在時更新條目。
-update 來源 名稱服務 目的地 更新掛載表條目的屬性。
-rm 來源 移除指定路徑的掛載點。
-ls [-d] 路徑 列出指定路徑下的掛載點。指定 -d 參數以取得詳細清單。
-getDestination 路徑 取得檔案所在或應建立的子叢集。
-setQuota 路徑 -nsQuota nsQuota -ssQuota ssQuota 設定指定路徑的配額。有關配額詳細資訊,請參閱 HDFS 配額指南
-setStorageTypeQuota 路徑 -storageType storageType stQuota 設定指定路徑的儲存類型配額。有關配額詳細資訊,請參閱 HDFS 配額指南
-clrQuota 路徑 清除指定掛載點的配額。有關配額詳細資訊,請參閱 HDFS 配額指南
-clrStorageTypeQuota 路徑 清除指定掛載點的儲存類型配額。有關配額詳細資訊,請參閱 HDFS 配額指南
-safemode enter leave get 手動設定路由器進入或離開安全模式。選項 get 將用於驗證路由器是否處於安全模式狀態。
-nameservice disable enable 名稱服務 停用/啟用聯盟中的名稱服務。如果停用,要求將不會傳送至該名稱服務。
-getDisabledNameservices 取得聯盟中已停用的名稱服務。
-refresh 更新已連接路由器的掛載表快取。
refreshRouterArgs <主機:ipc_port> <金鑰> [arg1..argn] 觸發 <主機:ipc_port> 上由 <金鑰> 指定的資源的執行時間更新。例如,若要啟用白名單檢查,我們只需要傳送更新指令,而不需要重新啟動路由器伺服器。
-refreshSuperUserGroupsConfiguration 更新路由器上的超級使用者代理群組對應。
-refreshCallQueue 從設定中重新載入路由器的呼叫佇列。

用於管理基於路由器的聯盟的指令。有關更多資訊,請參閱 掛載表管理

diskbalancer

用法

   hdfs diskbalancer
     [-plan <datanode> -fs <namenodeURI>]
     [-execute <planfile>]
     [-query <datanode>]
     [-cancel <planfile>]
     [-cancel <planID> -node <datanode>]
     [-report -node <file://> | [<DataNodeID|IP|Hostname>,...]]
     [-report -node -top <topnum>]
COMMAND_OPTION 說明
-plan 建立 diskbalancer 計畫
-execute 在資料節點上執行指定的計畫
-query 從資料節點取得目前的 diskbalancer 狀態
-cancel 取消正在執行的計畫
-report 報告資料節點的磁碟區資訊

執行 diskbalancer CLI。有關此指令的更多資訊,請參閱 HDFS Diskbalancer

ec

用法

   hdfs ec [generic options]
     [-setPolicy -policy <policyName> -path <path>]
     [-getPolicy -path <path>]
     [-unsetPolicy -path <path>]
     [-listPolicies]
     [-addPolicies -policyFile <file>]
     [-listCodecs]
     [-enablePolicy -policy <policyName>]
     [-disablePolicy -policy <policyName>]
     [-removePolicy -policy <policyName>]
     [-verifyClusterSetup -policy <policyName>...<policyName>]
     [-help [cmd ...]]
COMMAND_OPTION 說明
-setPolicy 設定指定的 ErasureCoding 政策至目錄
-getPolicy 取得指定路徑的 ErasureCoding 政策資訊
-unsetPolicy 取消先前對目錄呼叫 “setPolicy” 所設定的 ErasureCoding 政策
-listPolicies 列出所有受支援的 ErasureCoding 政策
-addPolicies 新增一組刪除編碼政策
-listCodecs 取得系統中受支援的刪除編碼編解碼器和編碼器的清單
-enablePolicy 在系統中啟用 ErasureCoding 政策
-disablePolicy 在系統中停用 ErasureCoding 政策
-removePolicy 從系統中移除 ErasureCoding 政策
-verifyClusterSetup 驗證叢集設定是否支援 Erasure Coding 政策清單

執行 ErasureCoding CLI。請參閱 HDFS ErasureCoding 以取得有關此命令的更多資訊。

haadmin

用法

    hdfs haadmin -transitionToActive <serviceId> [--forceactive]
    hdfs haadmin -transitionToStandby <serviceId>
    hdfs haadmin -transitionToObserver <serviceId>
    hdfs haadmin -failover [--forcefence] [--forceactive] <serviceId> <serviceId>
    hdfs haadmin -getServiceState <serviceId>
    hdfs haadmin -getAllServiceState
    hdfs haadmin -checkHealth <serviceId>
    hdfs haadmin -help <command>
COMMAND_OPTION 說明
-checkHealth 檢查指定的 NameNode 的健康狀態
-failover 在兩個 NameNode 之間啟動故障轉移
-getServiceState 確定指定的 NameNode 是處於活動狀態還是備用狀態
-getAllServiceState 傳回所有 NameNode 的狀態
-transitionToActive 將指定的 NameNode 的狀態轉換為活動狀態(警告:未執行圍欄)
-transitionToStandby 將指定的 NameNode 的狀態轉換為備用狀態(警告:未執行圍欄)
-transitionToObserver 將指定的 NameNode 的狀態轉換為觀察者狀態(警告:未執行圍欄)
-help [cmd] 顯示給定指令的說明,如果未指定任何指令,則會顯示所有指令的說明。

請參閱 HDFS HA with NFSHDFS HA with QJM 以取得有關此命令的更多資訊。

journalnode

用法:hdfs journalnode

此命令會啟動 journalnode 以供 HDFS HA with QJM 使用。

mover

用法:hdfs mover [-p <files/dirs> | -f <local file name>]

COMMAND_OPTION 說明
-f <local file> 指定包含要移轉的 HDFS 檔案/目錄清單的本機檔案。
-p <files/dirs> 指定要移轉的 HDFS 檔案/目錄的空格分隔清單。

執行資料移轉公用程式。請參閱 Mover 以取得更多詳細資料。

請注意,當同時省略 -p 和 -f 選項時,預設路徑為根目錄。

此外,從 2.7.0 開始引進固定功能,以防止某些複本被平衡器/搬運器移動。此固定功能在預設情況下已停用,且可透過設定屬性「dfs.datanode.block-pinning.enabled」來啟用。啟用後,此功能只會影響寫入到在 create() 呼叫中指定的偏好節點的區塊。當我們想要維護資料區域性時,此功能非常有用,例如 HBase 區域伺服器等應用程式。

namenode

用法

  hdfs namenode [-backup] |
          [-checkpoint] |
          [-format [-clusterid cid ] [-force] [-nonInteractive] ] |
          [-upgrade [-clusterid cid] [-renameReserved<k-v pairs>] ] |
          [-upgradeOnly [-clusterid cid] [-renameReserved<k-v pairs>] ] |
          [-rollback] |
          [-rollingUpgrade <rollback |started> ] |
          [-importCheckpoint] |
          [-initializeSharedEdits] |
          [-bootstrapStandby [-force] [-nonInteractive] [-skipSharedEditsCheck] ] |
          [-recover [-force] ] |
          [-metadataVersion ]
COMMAND_OPTION 說明
-backup 啟動備份節點。
-checkpoint 啟動檢查點節點。
-format [-clusterid cid] 格式化指定的 NameNode。它啟動 NameNode,格式化它,然後關閉它。如果名稱目錄已存在且已為叢集停用重新格式化,則會引發 NameNodeFormatException。
-upgrade [-clusterid cid] [-renameReserved <k-v pairs>] 在分發新 Hadoop 版本後,應使用升級選項啟動 Namenode。
-upgradeOnly [-clusterid cid] [-renameReserved <k-v pairs>] 升級指定的 NameNode,然後關閉它。
-rollback 將 NameNode 回滾到前一版本。這應在停止叢集並分發舊 Hadoop 版本後使用。
-rollingUpgrade <rollback|started> 有關詳細資訊,請參閱 滾動升級文件
-importCheckpoint 從檢查點目錄載入映像並將其儲存到目前的目錄中。檢查點目錄從屬性 dfs.namenode.checkpoint.dir 讀取
-initializeSharedEdits 格式化新的共用編輯目錄,並複製足夠的編輯記錄區段,以便備用 NameNode 可以啟動。
-bootstrapStandby [-force] [-nonInteractive] [-skipSharedEditsCheck] 允許透過從活動 NameNode 複製最新的名稱空間快照來引導備用 NameNode 的儲存目錄。這是在首次設定 HA 叢集時使用。選項 -force 或 -nonInteractive 的含義與 namenode -format 命令中描述的相同。-skipSharedEditsCheck 選項會略過編輯檢查,這可確保我們在共用目錄中已擁有足夠的編輯項目,以便從活動目錄上的最後一個檢查點啟動。
-recover [-force] 復原損毀檔案系統上的遺失的元資料。有關詳細資訊,請參閱 HDFS 使用者指南
-metadataVersion 驗證已設定的目錄是否存在,然後列印軟體和映像的元資料版本。

執行 namenode。有關升級和回滾的更多資訊,請參閱 升級回滾

nfs3

用法:hdfs nfs3

此指令會啟動 NFS3 閘道,以搭配 HDFS NFS3 服務 使用。

portmap

用法:hdfs portmap

此指令會啟動 RPC portmap,以搭配 HDFS NFS3 服務 使用。

secondarynamenode

用法:hdfs secondarynamenode [-checkpoint [force]] | [-format] | [-geteditsize]

COMMAND_OPTION 說明
-checkpoint [force] 如果 EditLog 大小 >= fs.checkpoint.size,則會檢查 SecondaryNameNode。如果使用 force,則會不論 EditLog 大小而檢查。
-format 在啟動期間格式化本機儲存空間。
-geteditsize 列印 NameNode 上未檢查的交易數。

執行 HDFS 次要名稱節點。請參閱 次要名稱節點 以取得更多資訊。

storagepolicies

用法

  hdfs storagepolicies
      [-listPolicies]
      [-setStoragePolicy -path <path> -policy <policy>]
      [-getStoragePolicy -path <path>]
      [-unsetStoragePolicy -path <path>]
      [-satisfyStoragePolicy -path <path>]
      [-isSatisfierRunning]
      [-help <command-name>]

列出/取得/設定/取消設定所有儲存原則。請參閱 HDFS 儲存原則文件 以取得更多資訊。

zkfc

用法:hdfs zkfc [-formatZK [-force] [-nonInteractive]]

COMMAND_OPTION 說明
-formatZK 格式化 Zookeeper 執行個體。-force:如果 znode 存在,則會格式化 znode。-nonInteractive:如果 znode 存在,則會格式化 znode 並中止,除非指定 -force 選項。
-h 顯示說明

此指令會啟動 Zookeeper 故障轉移控制器程序,以搭配 HDFS HA with QJM 使用。

偵錯指令

協助管理員偵錯 HDFS 問題的實用指令。這些指令僅供進階使用者使用。

verifyMeta

用法:hdfs debug verifyMeta -meta <metadata-file> [-block <block-file>]

COMMAND_OPTION 說明
-block block-file 選用參數,用於指定資料節點本機檔案系統上區塊檔案的絕對路徑。
-meta metadata-file 資料節點本機檔案系統上元資料檔案的絕對路徑。

驗證 HDFS 元資料和區塊檔案。如果指定區塊檔案,我們將驗證元資料檔案中的檢查碼是否與區塊檔案相符。

computeMeta

用法:hdfs debug computeMeta -block <block-file> -out <output-metadata-file>

COMMAND_OPTION 說明
-block block-file 資料節點本地檔案系統上區塊檔案的絕對路徑。
-out output-metadata-file 輸出元資料檔案的絕對路徑,用於儲存區塊檔案的檢查碼計算結果。

從區塊檔案計算 HDFS 元資料。如果指定區塊檔案,我們將從區塊檔案計算檢查碼,並將其儲存到指定的輸出元資料檔案。

注意:自行承擔風險!如果區塊檔案損毀,而您覆寫其元資料檔案,它將在 HDFS 中顯示為「良好」,但您無法讀取資料。僅在最後的措施中使用,且當您 100% 確定區塊檔案良好時使用。

recoverLease

用法:hdfs debug recoverLease -path <path> [-retries <num-retries>]

COMMAND_OPTION 說明
[-path path] 要恢復租約的 HDFS 路徑。
[-retries num-retries] 用戶端將重試呼叫 recoverLease 的次數。預設重試次數為 1。

恢復指定路徑上的租約。路徑必須位於 HDFS 檔案系統上。預設重試次數為 1。

verifyEC

用法:hdfs debug verifyEC -file <file>

COMMAND_OPTION 說明
[-file EC-file] 要驗證的 HDFS EC 檔案。

驗證擦除編碼檔案上擦除編碼的正確性。

dfsadmin 與 ViewFsOverloadScheme

用法:hdfs dfsadmin -fs <child fs mount link URI> <dfsadmin command options>

COMMAND_OPTION 說明
-fs child fs mount link URI 這是 ViewFS 世界中子檔案系統的邏輯掛載連結路徑。此 URI 通常形成為以 fs.defaultFS 為前綴的 src 掛載連結。請注意,這不是實際的子檔案系統 URI,而是一個指向實際子檔案系統的邏輯掛載連結 URI

範例命令用法:hdfs dfsadmin -fs hdfs://nn1 -safemode enter

在 ViewFsOverloadScheme 中,我們可能有多個子檔案系統作為掛載點對應,如 ViewFsOverloadScheme 指南 中所示。這裡的 -fs 選項是 dfsadmin 支援的選用一般參數。當使用者想要在其中一個子檔案系統上執行命令時,他們需要將該檔案系統掛載對應連結 URI 傳遞給 -fs 選項。讓我們看以下的掛載連結組態和 dfsadmin 命令範例。

掛載連結

<property>
  <name>fs.defaultFS</name>
  <value>hdfs://MyCluster1</value>
</property>

<property>
  <name>fs.viewfs.mounttable.MyCluster1./user</name>
  <value>hdfs://MyCluster2/user</value>
  <!-- mount table name : MyCluster1
       mount link mapping: hdfs://MyCluster1/user --> hdfs://MyCluster2/user
       mount link path: /user
       mount link uri: hdfs://MyCluster1/user
       mount target uri for /user: hdfs://MyCluster2/user -->
</property>

如果使用者想要與 hdfs://MyCluster2/ 對話,他們可以傳遞 -fs 選項 (-fs hdfs://MyCluster1/user) 由於 /user 已對應到叢集 hdfs://MyCluster2/user,dfsadmin 會將傳遞的 (-fs hdfs://MyCluster1/user) 解析為目標檔案系統 (hdfs://MyCluster2/user)。這樣,使用者可以存取 ViewFsOverloadScheme 中的所有 hdfs 子檔案系統。如果沒有提供 -fs 選項,它會嘗試連線到已設定的 fs.defaultFS 叢集,如果叢集以 fs.defaultFS URI 執行中。