目錄
2.3.1.etc/hadoop/hadoop-env.sh
2.3.2.etc/hadoop/hadoop-user-functions.sh
1.概述
所有Hadoop命令和子項目都遵循相同的基本結構:
用法: shellcommand [SHELL_OPTIONS] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]
FIELD | Description |
---|---|
shellcommand | 所調用項目的命令。 例如,Hadoop使用hadoop,HDFS使用hdfs,而YARN使用yarn。 |
SHELL_OPTIONS | Shell在執行Java之前處理的選項。 |
COMMAND | 要執行的動作。 |
GENERIC_OPTIONS | 多個命令支持的一組通用選項。 |
COMMAND_OPTIONS | 本文檔針對Hadoop通用子項目描述了各種命令及其選項。 HDFS和YARN包含在其他文檔中。 |
1.1.Shell選項
所有的shell命令都將接受一組通用的選項。 對於某些命令,這些選項將被忽略。 例如,在僅在單個主機上執行的命令上傳遞--hostnames將被忽略。
SHELL_OPTION | Description |
---|---|
--buildpaths | 啓用jar的開發版本。 |
--config confdir | 覆蓋默認的配置目錄。 默認值爲$HADOOP_HOME/etc/hadoop. |
--daemon mode |
如果該命令支持守護程序(例如hdfs namenode),請以適當的模式執行。 支持的模式有:啓動以後臺駐留程序模式啓動進程,停止以停止進程以及狀態確定進程的活動狀態。 狀態將返回符合LSB-compliant的結果代碼。 如果未提供任何選項,則支持守護程序的命令將在前臺運行。 對於不支持守護程序的命令,將忽略此選項。 |
--debug | 啓用shell層配置調試信息 |
--help | Shell腳本用法信息。 |
--hostnames | 使用--workers時,請使用空格分隔的主機名列表覆蓋worker文件,以在其中執行多主機子命令。 如果不使用--workers,則忽略此選項。 |
--hosts |
使用--workers時,請用另一個文件覆蓋該worker文件,該文件包含要在其中執行多主機子命令的主機名列表。 如果不使用--workers,則忽略此選項。 |
--loglevel loglevel | 覆蓋日誌級別。 有效的日誌級別爲FATAL,ERROR,WARN,INFO,DEBUG和TRACE。 默認值爲INFO。 |
--workers | 如果可能,請在workers文件中的所有主機上執行此命令。 |
1.2.通用選項
許多子命令使用一組通用的配置選項來更改其行爲:
GENERIC_OPTION | Description |
---|---|
-archives <comma separated list of archives> | 指定用逗號分隔的歸檔文件,以在計算機上將其取消歸檔。 僅適用於工作(job)。 |
-conf <configuration file> | 指定應用程序配置文件。 |
-D <property>=<value> | 給定屬性的使用值。 |
-files <comma separated list of files> | 指定以逗號分隔的文件,以將其複製到map reduce集羣。 僅適用於工作(job)。 |
-fs <file:///> or <hdfs://namenode:port> |
指定要使用的默認文件系統URL。從配置中覆蓋 'fs.defaultFS' 屬性。 |
-jt <local> or <resourcemanager:port> | 指定一個ResourceManager。 僅適用於工作(job)。 |
-libjars <comma seperated list of jars> |
指定以逗號分隔的jar文件以包含在類路徑中。 僅適用於工作(job)。 |
2.Hadoop常用命令
所有這些命令都是從hadoop shell命令執行的。 它們已分爲“用戶命令”和“管理命令”。
2.1.用戶命令
對hadoop集羣的用戶有用的命令。
2.1.1.檔案文件(archive)
創建一個hadoop存檔。 可以在《 Hadoop歸檔指南(Hadoop Archives Guide)》中找到更多信息。
2.1.2.檢查本機(checknative)
用法: hadoop checknative [-a] [-h]
COMMAND_OPTION | Description |
---|---|
-a | 檢查所有庫是否可用。 |
-h | 打印幫助 |
此命令檢查Hadoop本機代碼的可用性。 有關更多信息,請參見Native Libaries。 默認情況下,此命令僅檢查libhadoop的可用性。
2.1.3.classpath
用法: hadoop classpath [--glob |--jar <path> |-h |--help]
COMMAND_OPTION | Description |
---|---|
--glob | 展開通配符 |
--jar path | 將類路徑作爲清單寫入名爲path的jar中 |
-h, --help | 打印幫助 |
打印獲取Hadoop jar和所需庫所需的類路徑。 如果不帶參數調用,則打印由命令腳本設置的類路徑,該類路徑可能在類路徑條目中包含通配符。 其他選項可在通配符擴展後打印類路徑,或將類路徑寫入jar文件的清單中。 後者在無法使用通配符且擴展的類路徑超過支持的最大命令行長度的環境中很有用。
2.1.4.conftest
用法: hadoop conftest [-conffile <path>]...
COMMAND_OPTION | Description |
---|---|
-conffile | 要驗證的配置文件或目錄的路徑 |
-h, --help | 打印幫助 |
驗證配置XML文件。 如果未指定-conffile選項,則將驗證${HADOOP_CONF_DIR}中名稱以.xml結尾的文件。 如果指定,將驗證該路徑。 您可以指定文件或目錄,如果指定了目錄,則將驗證該目錄中名稱以.xml結尾的文件。 您可以多次指定-conffile選項。
驗證非常少:解析XML,並檢查重複和空屬性名稱。 該命令不支持XInclude。 如果使用它來引入配置項,它將聲明XML文件無效。
2.1.5.憑據(credential)
用法: hadoop credential <subcommand> [options]
COMMAND_OPTION | Description |
---|---|
create alias [-provider provider-path] [-strict] [-value credential-value] |
提示用戶將憑據存儲爲給定別名。 除非指明-provider,否則將使用core-site.xml文件中的hadoop.security.credential.provider.path。 如果提供程序使用默認密碼,則-strict標誌將導致命令失敗。 使用-value標誌來提供憑據值(也稱爲別名密碼)而不是提示您。 |
delete alias [-provider provider-path] [-strict] [-f] |
刪除具有提供的別名的憑據。 除非指明-provider,否則將使用core-site.xml文件中的hadoop.security.credential.provider.path。 如果提供程序使用默認密碼,則-strict標誌將導致命令失敗。 除非指定-f,否則該命令要求確認。 |
list [-provider provider-path] [-strict] |
列出所有憑證別名除非指明提供者,否則將使用core-site.xml文件中的hadoop.security.credential.provider.path。 如果提供程序使用默認密碼,則-strict標誌將導致命令失敗。 |
用於管理憑據提供程序中的憑據,密碼和機密的命令。
Hadoop中的CredentialProvider API允許分離應用程序以及它們如何存儲所需的passwords/secrets。 爲了指示特定的提供程序類型和位置,用戶必須在core-site.xml中提供hadoop.security.credential.provider.path配置元素,或在以下每個命令上使用命令行選項 -provider。 該提供程序路徑是一個用逗號分隔的URL列表,它指示應查詢的提供程序列表的類型和位置。 例如,以下路徑: user:///,jceks://file/tmp/test.jceks,jceks://[email protected]/my/path/test.jceks
指示應通過用戶提供程序查詢當前用戶的憑據文件,在/tmp/test.jceks上的本地文件是Java Keystore Provider,和在HDFS內nn1.example.com/my/path/test.jceks的文件也是Java Keystore Provider的存儲。
提供程序經常要求提供密碼或其他機密。 如果提供者需要密碼而找不到密碼,它將使用默認密碼併發出一條警告消息,提示您正在使用默認密碼。 如果提供了-strict標誌,則警告消息變爲錯誤消息,並且該命令立即返回錯誤狀態。
例如: hadoop credential list -provider jceks://file/tmp/test.jceks
2.1.6.distch
用法: hadoop distch [-f urilist_url] [-i] [-log logdir] path:owner:group:permissions
COMMAND_OPTION | Description |
---|---|
-f | 更改對象列表 |
-i | 忽略故障 |
-log | 日誌輸出目錄 |
一次更改許多文件的所有權和權限。
2.1.7.distcp
遞歸複製文件或目錄。 有關更多信息,請參見《 Hadoop DistCp指南》。
2.1.8.dtutil
用法: hadoop dtutil [-keytab keytab_file -principal principal_name ] subcommand [-format (java|protobuf)] [-alias alias ] [-renewer renewer ] filename…
實用程序,用於獲取和管理憑據文件中的hadoop授權令牌。 它旨在替代更簡單的命令fetchdt。 有多個子命令,每個子命令都有自己的標誌和選項。
對於每個寫出文件的子命令,-format選項將指定要使用的內部格式。 java是與fetchdt匹配的傳統格式。 默認值爲protobuf。
對於連接到服務的每個子命令,都提供了便利標誌,以指定用於身份驗證的kerberos主體名稱和keytab文件。
SUBCOMMAND | Description |
---|---|
print [-alias alias ] filename [ filename2 ...] |
打印出filename (和filename2 ...)中包含的標記中的字段。 |
get URL [-service scheme ] [-format (java|protobuf)] [-alias alias ] [-renewer renewer ] filename |
從URL的服務中獲取令牌並將其放置在文件名中。 |
append [-format (java|protobuf)] filename filename2 [ filename3 ...] |
將前N個文件名的內容追加到最後一個文件名。 如果多個文件中都存在帶有公共服務字段的令牌,則早期文件的令牌將被覆蓋。 也就是說,最後一個文件中存在的令牌始終被保留。 |
remove -alias alias [-format (java|protobuf)] filename [ filename2 ...] |
從指定的每個文件中刪除與別名匹配的標記,並使用指定的格式寫出每個文件。 必須指定別名。 |
cancel -alias alias [-format (java|protobuf)] filename [ filename2 ...] |
就像刪除一樣,除了令牌也使用令牌對象中指定的服務取消。 |
renew -alias alias [-format (java|protobuf)] filename [ filename2 ...] |
對於指定的每個文件,續訂與別名匹配的令牌並使用指定的格式寫出每個文件。 必須指定別名。 |
2.1.9.fs
《File System Shell Guide》中記錄了該命令。 使用HDFS時,它是hdfs dfs的同義詞。
2.1.10.gridmix
Gridmix是Hadoop集羣的基準測試工具。 可以在《Gridmix Guide》中找到更多信息。
2.1.11.jar
用法: hadoop jar <jar> [mainClass] args...
運行一個jar文件。
請使用yarn jar啓動YARN應用程序。
2.1.12.jnipath
用法: hadoop jnipath
打印計算的 java.library.path。
2.1.13.kerbname
用法: hadoop kerbname principal
通過auth_to_local規則將命名的主體轉換爲Hadoop用戶名。
例如: hadoop kerbname [email protected]
2.1.14.kdiag
用法: hadoop kdiag
診斷Kerberos問題
2.1.15.key
用法: hadoop key <subcommand> [options]
COMMAND_OPTION | Description |
---|---|
create keyname [-cipher cipher] [-size size] [-description description] [-attr attribute=value] [-provider provider] [-strict] [-help] |
在-provider參數指定的提供程序中,爲密鑰名稱參數指定的名稱創建一個新密鑰。 如果提供程序使用默認密碼,則-strict標誌將導致命令失敗。 您可以指定帶有密碼參數的密碼。 當前默認密碼爲“ “AES/CTR/NoPadding”。 默認密鑰大小爲128.您可以使用-size參數指定請求的密鑰長度。 可以使用-attr參數指定任意attribute=value樣式屬性。 -attr可以多次指定,每個屬性一次。 |
roll keyname [-provider provider] [-strict] [-help] |
在使用-provider參數指示的提供者中爲指定密鑰創建新版本。 如果提供程序使用默認密碼,則-strict標誌將導致命令失敗。 |
delete keyname [-provider provider] [-strict] [-f] [-help] |
從-provider指定的提供程序中刪除由 keyname 參數指定的所有版本的密鑰。 如果提供程序使用默認密碼,則-strict標誌將導致命令失敗。 除非指定-f,否則該命令要求用戶確認。 |
list [-provider provider] [-strict] [-metadata] [-help] |
顯示在core-site.xml中配置或由-provider 參數指定的特定提供程序中包含的鍵名。 如果提供程序使用默認密碼,則-strict標誌將導致命令失敗。 -metadata顯示元數據。 |
-help | 打印此命令的用法 |
通過KeyProvider管理密鑰。 有關KeyProvider的詳細信息,請參見《透明加密指南》。
提供程序經常要求提供密碼或其他機密。 如果提供者需要密碼而找不到密碼,它將使用默認密碼併發出一條警告消息,提示您正在使用默認密碼。 如果提供了-strict標誌,則警告消息變爲錯誤消息,並且該命令立即返回錯誤狀態。
注意:某些KeyProvider(例如org.apache.hadoop.crypto.key.JavaKeyStoreProvider)不支持大寫密鑰名稱。
注意:某些KeyProvider不會直接執行密鑰刪除操作(例如,執行軟刪除操作或延遲實際的刪除操作,以防止出錯)。 在這些情況下,刪除後創建/刪除具有相同名稱的密鑰時可能會遇到錯誤。 請檢查基礎KeyProvider以獲得詳細信息。
2.1.6.kms
用法: hadoop kms
運行密鑰管理服務器KMS。
2.1.7.trace
查看和修改Hadoop跟蹤設置。 請參閱跟蹤指南。
2.1.8.version
用法: hadoop version
打印版本。
2.1.9.CLASSNAME
用法: hadoop CLASSNAME
運行名爲CLASSNAME的類。 該類必須是包的一部分。
2.1.10.envvars
用法: hadoop envvars
顯示計算的Hadoop環境變量。
2.2.Administration命令
對hadoop集羣的管理員有用的命令。
2.2.1.daemonlog
用法:
hadoop daemonlog -getlevel <host:port> <classname> [-protocol (http|https)]
hadoop daemonlog -setlevel <host:port> <classname> <level> [-protocol (http|https)]
COMMAND_OPTION | Description |
---|---|
-getlevel host:port classname [-protocol (httphttps)] |
在運行於 host:port 的守護程序中打印由合格的classname標識的日誌的日誌級別。-protocol標誌指定連接協議。 |
-setlevel host:port classname level [-protocol (httphttps)] |
在運行於 host:port 的守護程序中設置由合格的classname標識的日誌的日誌級別。 -protoco標誌指定連接協議。 |
動態 Get/Set 守護程序中由合格的類名稱標識的日誌的日誌級別。 默認情況下,該命令發送HTTP請求,但是可以通過使用-protocol https參數發送HTTPS請求來覆蓋此請求。
例:
$ bin/hadoop daemonlog -setlevel 127.0.0.1:9870 org.apache.hadoop.hdfs.server.namenode.NameNode DEBUG
$ bin/hadoop daemonlog -getlevel 127.0.0.1:9871 org.apache.hadoop.hdfs.server.namenode.NameNode DEBUG -protocol https
請注意,該設置不是永久性的,並且在重新啓動守護程序時將被重置。 該命令通過向守護程序的內部Jetty Servlet發送HTTP/HTTPS請求來起作用,因此它支持以下守護程序:
- Common
- key management server
- HDFS
- name node
- secondary name node
- data node
- journal node
- HttpFS server
- YARN
- resource manager
- node manager
- Timeline server
2.3.Files
2.3.1.etc/hadoop/hadoop-env.sh
該文件存儲所有Hadoop Shell命令使用的全局設置。
2.3.2.etc/hadoop/hadoop-user-functions.sh
此文件允許高級用戶覆蓋某些Shell功能。
2.3.3.~/.hadooprc
這爲個人用戶存儲了個人環境。 它在hadoop-env.sh和hadoop-user-functions.sh文件之後進行處理,並且可以包含相同的設置。