Hadoop コマンドガイド

概要

すべてのHadoopコマンドとサブプロジェクトは、同じ基本的な構造に従います。

使用法: shellcommand [SHELL_OPTIONS] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]

フィールド 説明
shellcommand 呼び出されるプロジェクトのコマンド。たとえば、Hadoop Commonではhadoop、HDFSではhdfs、YARNではyarnを使用します。
SHELL_OPTIONS Javaを実行する前にシェルが処理するオプション。
COMMAND 実行するアクション。
GENERIC_OPTIONS 複数のコマンドでサポートされる共通のオプションセット。
COMMAND_OPTIONS Hadoop Commonサブプロジェクトに関するこのドキュメントでは、さまざまなコマンドとそのオプションについて説明します。HDFSとYARNは、他のドキュメントで説明されています。

シェルオプション

すべてのシェルコマンドは、共通のオプションセットを受け入れます。一部のコマンドでは、これらのオプションは無視されます。たとえば、単一のホストでのみ実行されるコマンドで---hostnamesを渡しても無視されます。

SHELL_OPTION 説明
--buildpaths 開発者バージョンのjarを有効にします。
--config confdir デフォルトの構成ディレクトリを上書きします。デフォルトは$HADOOP_HOME/etc/hadoopです。
--daemon mode コマンドがデーモン化をサポートしている場合(例: hdfs namenode)、適切なモードで実行します。サポートされているモードは、プロセスをデーモンモードで開始するstart、プロセスを停止するstop、プロセスのアクティブな状態を判別するstatusです。statusは、LSB準拠の結果コードを返します。オプションが指定されていない場合、デーモン化をサポートするコマンドはフォアグラウンドで実行されます。デーモン化をサポートしていないコマンドの場合、このオプションは無視されます。
--debug シェルレベルの構成デバッグ情報を有効にします
--help シェルスクリプトの使用情報。
--hostnames --workersを使用する場合、マルチホストサブコマンドを実行するホスト名のスペース区切りリストでワーカーファイルを上書きします。--workersを使用しない場合、このオプションは無視されます。
--hosts --workersを使用する場合、マルチホストサブコマンドを実行するホスト名のリストを含む別のファイルでワーカーファイルを上書きします。--workersを使用しない場合、このオプションは無視されます。
--loglevel loglevel ログレベルを上書きします。有効なログレベルは、FATAL、ERROR、WARN、INFO、DEBUG、およびTRACEです。デフォルトはINFOです。
--workers 可能であれば、workersファイル内のすべてのホストでこのコマンドを実行します。

汎用オプション

多くのサブコマンドは、その動作を変更するために共通の構成オプションセットを尊重します。

GENERIC_OPTION 説明
-archives <アーカイブのカンマ区切りリスト> 計算マシンで解凍するアーカイブをカンマ区切りで指定します。ジョブにのみ適用されます。
-conf <構成ファイル> アプリケーション構成ファイルを指定します。
-D <property>=<value> 指定されたプロパティに値を使用します。
-files <ファイルのカンマ区切りリスト> マップリデュースクラスタにコピーするファイルをカンマ区切りで指定します。ジョブにのみ適用されます。
-fs <file:///> または <hdfs://namenode:port> 使用するデフォルトのファイルシステムURLを指定します。構成の「fs.defaultFS」プロパティを上書きします。
-jt <local> または <resourcemanager:port> ResourceManagerを指定します。ジョブにのみ適用されます。
-libjars <jarファイルのカンマ区切りリスト> クラスパスに含めるjarファイルをカンマ区切りで指定します。ジョブにのみ適用されます。

Hadoop Common コマンド

これらのコマンドはすべてhadoopシェルコマンドから実行されます。ユーザーコマンド管理コマンドに分類されています。

ユーザーコマンド

Hadoopクラスタのユーザーに役立つコマンド。

archive

Hadoopアーカイブを作成します。詳細については、Hadoopアーカイブガイドを参照してください。

checknative

使用法: hadoop checknative [-a] [-h]

COMMAND_OPTION 説明
-a すべてのライブラリが利用可能かどうかを確認します。
-h ヘルプを表示します

このコマンドは、Hadoopネイティブコードの可用性をチェックします。詳細については、ネイティブライブラリを参照してください。デフォルトでは、このコマンドはlibhadoopの可用性のみをチェックします。

classpath

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

COMMAND_OPTION 説明
--glob ワイルドカードを展開します
--jar path pathという名前のjarにマニフェストとしてクラスパスを書き込みます
-h--help ヘルプを表示します

Hadoop jarと必要なライブラリを取得するために必要なクラスパスを出力します。引数なしで呼び出された場合は、コマンドスクリプトによって設定されたクラスパスを出力します。これには、クラスパスエントリにワイルドカードが含まれている可能性があります。追加のオプションは、ワイルドカード展開後のクラスパスを出力するか、クラスパスをjarファイルのマニフェストに書き込みます。後者は、ワイルドカードを使用できず、展開されたクラスパスがサポートされている最大コマンドライン長を超える環境で役立ちます。

conftest

使用法: hadoop conftest [-conffile <path>]...

COMMAND_OPTION 説明
-conffile 検証する構成ファイルまたはディレクトリのパス
-h--help ヘルプを表示します

構成XMLファイルを検証します。-conffileオプションが指定されていない場合、${HADOOP_CONF_DIR}内の名前が.xmlで終わるファイルが検証されます。指定された場合は、そのパスが検証されます。ファイルまたはディレクトリのいずれかを指定できます。ディレクトリを指定した場合、そのディレクトリ内の名前が.xmlで終わるファイルが検証されます。-conffileオプションを複数回指定できます。

検証は非常に最小限です。XMLが解析され、重複したプロパティ名と空のプロパティ名がチェックされます。このコマンドはXIncludeをサポートしていません。設定項目を取り込むためにXIncludeを使用している場合、XMLファイルは無効であると宣言されます。

credential

使用法: hadoop credential <サブコマンド> [オプション]

COMMAND_OPTION 説明
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] すべての資格情報エイリアスを一覧表示します。-provider が指定されていない限り、core-site.xml ファイル内の hadoop.security.credential.provider.path が使用されます。-strict フラグを指定すると、プロバイダーがデフォルトのパスワードを使用している場合にコマンドが失敗します。
check alias [-provider provider-path] [-strict] 指定されたエイリアスのパスワードを確認します。-provider が指定されていない限り、core-site.xml ファイル内の hadoop.security.credential.provider.path が使用されます。-strict フラグを指定すると、プロバイダーがデフォルトのパスワードを使用している場合にコマンドが失敗します。

資格情報プロバイダー内の資格情報、パスワード、およびシークレットを管理するコマンド。

HadoopのCredentialProvider APIを使用すると、アプリケーションと、必要なパスワード/シークレットの保存方法を分離できます。特定のプロバイダータイプと場所を示すには、core-site.xml内の hadoop.security.credential.provider.path 設定要素を指定するか、次の各コマンドでコマンドラインオプション -provider を使用する必要があります。このプロバイダーパスは、参照する必要のあるプロバイダーのタイプと場所を示すコンマ区切りのURLのリストです。たとえば、次のパス: user:///,jceks://file/tmp/test.jceks,jceks://hdfs@nn1.example.com/my/path/test.jceks

現在のユーザーの資格情報ファイルをUser Providerを通じて参照し、/tmp/test.jceks にあるローカルファイルがJava Keystore Providerであり、nn1.example.com/my/path/test.jceks のHDFS内にあるファイルもJava Keystore Providerのストアであることを示します。

credentialコマンドを使用する場合、多くの場合、特定の資格情報ストアプロバイダーにパスワードまたはシークレットをプロビジョニングするために使用されます。使用するプロバイダーストアを明示的に示すには、-provider オプションを使用する必要があります。それ以外の場合は、複数のプロバイダーのパスが指定されていると、最初の非一時プロバイダーが使用されます。これが意図したものかどうかはわかりません。

プロバイダーは、パスワードまたはその他のシークレットを提供する必要があることがよくあります。プロバイダーがパスワードを必要としていて、パスワードが見つからない場合、デフォルトのパスワードを使用し、デフォルトのパスワードが使用されているという警告メッセージを出力します。-strict フラグが指定されている場合、警告メッセージはエラーメッセージになり、コマンドはエラー状態で即座に返されます。

例: hadoop credential list -provider jceks://file/tmp/test.jceks

distch

使用法: hadoop distch [-f urilist_url] [-i] [-log logdir] path:owner:group:permissions

COMMAND_OPTION 説明
-f 変更するオブジェクトのリスト
-i 失敗を無視する
-log 出力ログを記録するディレクトリ

多くのファイルの所有権と権限を一度に変更します。

distcp

ファイルまたはディレクトリを再帰的にコピーします。詳細については、Hadoop DistCpガイドをご覧ください。

dtutil

使用法: hadoop dtutil [-keytab keytab_file -principal principal_name ] subcommand [-format (java|protobuf)] [-alias alias ] [-renewer renewer ] filename…

資格情報ファイル内のhadoop委任トークンをフェッチおよび管理するユーティリティ。よりシンプルなコマンド fetchdt を置き換えることを目的としています。複数のサブコマンドがあり、それぞれに独自のフラグとオプションがあります。

ファイルを出力するすべてのサブコマンドでは、-format オプションは使用する内部形式を指定します。javafetchdt に一致するレガシー形式です。デフォルトは protobuf です。

サービスに接続するすべてのサブコマンドには、認証に使用するKerberosプリンシパル名とkeytabファイルを指定するための便利なフラグが用意されています。

サブコマンド 説明
print
   [-alias alias ]
   filename [ filename2 ...]
filename (および filename2 …) に含まれるトークンのフィールドを出力します。
alias が指定されている場合は、alias に一致するトークンのみを出力します。それ以外の場合は、すべてのトークンを出力します。
get URL
   [-service scheme ]
   [-format (java|protobuf)]
   [-alias alias ]
   [-renewer renewer ]
   filename
URL でサービスからトークンをフェッチし、filename に配置します。
URL は必須であり、get の直後に記述する必要があります。
URL は、サービスURL (例: hdfs://127.0.0.1:9000) です。
alias は、トークン内のサービスフィールドを上書きします。
これは、外部名と内部名を持つホスト (例: firewall.com:14000) を対象としています。
filename は最後に記述する必要があり、トークンファイルの名前です。
存在しない場合は作成されます。それ以外の場合は、トークンが既存のファイルに追加されます。
-service フラグは、http または https で始まるURLでのみ使用する必要があります。
次のように同等です。hdfs://127.0.0.1:9000/ vs. https://127.0.0.1:9000 -service hdfs
append
   [-format (java|protobuf)]
   filename filename2 [ filename3 ...]
最初の N 個のファイルの内容を最後のファイルに追加します。
共通のサービスフィールドを持つトークンが複数のファイルに存在する場合、以前のファイルのトークンは上書きされます。
つまり、最後のファイルにあるトークンは常に保持されます。
remove -alias alias
   [-format (java|protobuf)]
   filename [ filename2 ...]
指定された各ファイルから、alias に一致するトークンを削除し、指定された形式を使用して各ファイルを出力します。
alias を指定する必要があります。
cancel -alias alias
   [-format (java|protobuf)]
   filename [ filename2 ...]
remove と同様ですが、トークンオブジェクトで指定されたサービスを使用してトークンもキャンセルされます。
alias を指定する必要があります。
renew -alias alias
   [-format (java|protobuf)]
   filename [ filename2 ...]
指定された各ファイルについて、alias に一致するトークンを更新し、指定された形式を使用して各ファイルを出力します。
alias を指定する必要があります。
import base64
   [-alias alias ]
   filename
base64トークンからトークンをインポートします。
alias は、トークン内のサービスフィールドを上書きします。

fs

このコマンドについては、ファイルシステムシェルガイドで説明されています。HDFSが使用されている場合、これは hdfs dfs の同義語です。

gridmix

Gridmixは、Hadoopクラスターのベンチマークツールです。詳細については、Gridmixガイドをご覧ください。

jar

使用法: hadoop jar <jar> [mainClass] args...

jarファイルを実行します。

代わりにYARNアプリケーションを起動するには、yarn jar を使用します。

jnipath

使用法: hadoop jnipath

計算された java.library.path を出力します。

kerbname

使用法: hadoop kerbname principal

auth_to_localルールを介して名前付きプリンシパルをHadoopユーザー名に変換します。

例: hadoop kerbname user@EXAMPLE.COM

kdiag

使用法: hadoop kdiag

Kerberosの問題を診断します

key

使用法: hadoop key <サブコマンド> [オプション]

COMMAND_OPTION 説明
create keyname [-cipher cipher] [-size size] [-description description] [-attr attribute=value] [-provider provider] [-strict] [-help] -provider 引数で指定されたプロバイダー内で、keyname 引数で指定された名前の新しいキーを作成します。-strict フラグを指定すると、プロバイダーがデフォルトのパスワードを使用している場合にコマンドが失敗します。-cipher 引数で暗号を指定できます。現在のデフォルトの暗号は「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 はメタデータを表示します。
check keyname [-provider provider] [-strict] [-help] core-site.xmlで構成されているか、-provider 引数で指定された特定のプロバイダーに含まれるkeynameのパスワードを確認します。-strict フラグを指定すると、プロバイダーがデフォルトのパスワードを使用している場合にコマンドが失敗します。

| -help | このコマンドの使用法を出力します |

KeyProviderを介してキーを管理します。KeyProviderの詳細については、透過的な暗号化ガイドをご覧ください。

プロバイダーは、パスワードまたはその他のシークレットを提供する必要があることがよくあります。プロバイダーがパスワードを必要としていて、パスワードが見つからない場合、デフォルトのパスワードを使用し、デフォルトのパスワードが使用されているという警告メッセージを出力します。-strict フラグが指定されている場合、警告メッセージはエラーメッセージになり、コマンドはエラー状態で即座に返されます。

注: 一部のKeyProvider (例: org.apache.hadoop.crypto.key.JavaKeyStoreProvider) は、大文字のキー名をサポートしていません。

注: 一部のKeyProviderは、キーの削除を直接実行しません (たとえば、誤った削除を防ぐために、代わりにソフト削除を実行したり、実際の削除を遅らせたりします)。このような場合、削除後に同じ名前のキーを作成/削除するとエラーが発生する可能性があります。詳細については、基盤となるKeyProviderを確認してください。

kms

使用法: hadoop kms

Key Management ServerであるKMSを実行します。

trace

Hadoopトレーシング設定を表示および変更します。トレーシングガイドを参照してください。

version

使用法: hadoop version

バージョンを表示します。

CLASSNAME

使用法: hadoop CLASSNAME

CLASSNAME という名前のクラスを実行します。クラスはパッケージの一部である必要があります。

envvars

使用法: hadoop envvars

計算された Hadoop 環境変数を表示します。

管理コマンド

Hadoop クラスタの管理者にとって役立つコマンドです。

daemonlog

使用法

hadoop daemonlog -getlevel <host:port> <classname> [-protocol (http|https)]
hadoop daemonlog -setlevel <host:port> <classname> <level> [-protocol (http|https)]
COMMAND_OPTION 説明
-getlevel host:port classname [-protocol (http|https)] host:port で実行中のデーモンで、完全修飾された classname で識別されるログのログレベルを表示します。-protocol フラグは接続のプロトコルを指定します。
-setlevel host:port classname level [-protocol (http|https)] host:port で実行中のデーモンで、完全修飾された classname で識別されるログのログレベルを設定します。-protocol フラグは接続のプロトコルを指定します。

デーモン内の完全修飾クラス名で識別されるログのログレベルを動的に取得/設定します。デフォルトでは、コマンドは 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 サーブレットに HTTP/HTTPS リクエストを送信することで機能するため、次のデーモンをサポートします。

  • 共通
    • キー管理サーバー
  • HDFS
    • ネームノード
    • セカンダリネームノード
    • データノード
    • ジャーナルノード
    • HttpFS サーバー
  • YARN
    • リソースマネージャー
    • ノードマネージャー
    • タイムラインサーバー

ファイル

etc/hadoop/hadoop-env.sh

このファイルには、すべての Hadoop シェルコマンドで使用されるグローバル設定が保存されます。

etc/hadoop/hadoop-user-functions.sh

このファイルを使用すると、上級ユーザーが一部のシェル機能を上書きできます。

~/.hadooprc

これは、個々のユーザーの個人環境を保存します。hadoop-env.sh および hadoop-user-functions.sh ファイルの後に処理され、同じ設定を含めることができます。