14 クラスタ全体でのdcliユーティリティを使用したコマンドの実行
dcli
ユーティリティは、Oracle Big Data Appliance上のサーバー・グループ全体でコマンドを実行して出力を返します。dcli
は、「Oracle Big Data Applianceのフル・ラックまたはスタータ・ラックの構成」で使用します。
この章の内容は次のとおりです。
14.1 dcliユーティリティの概要
dcli
ユーティリティは、管理(eth0)インタフェースを使用して複数のOracle Big Data Applianceサーバーに対してコマンドを実行し、接続を確立します。任意のサーバーからユーティリティを実行できます。
このユーティリティは、root
のみが実行できます。
14.1.1 パスワードなしSSHの設定
dcli
ユーティリティでは、ローカル・サーバーとすべてのターゲット・サーバー間にパスワードなしセキュア・シェル(SSH)が必要です。ローカル・サーバーでdcli
ユーティリティを実行すると、dcli
で指定したコマンドがターゲット・サーバーで実行されます。
2つのスクリプト(setup-root-ssh
およびremove-root-ssh
)によって、Oracle Big Data ApplianceでSSHを簡単に使用できます。これらのスクリプトは、dcli
でも使用される2つのオプションを受け入れます。
-
-C
: Hadoopクラスタのすべてのサーバーをターゲットに設定します。 -
-g
: ユーザー定義のサーバー・セットをターゲットに設定します。
これらのオプションの詳細は、表14-1を参照してください。
ノート:
Mammothユーティリティにはリモートroot
アクセスが必要です。ただし、Oracle Big Data Applianceでは標準の操作では不要です。
rootのパスワードなしSSHを設定するには、次の手順を設定します。
-
PuTTYなどのユーティリティを使用してOracle Big Data Applianceサーバーに接続します。SSHの接続タイプを選択します。
-
root
としてログインします。 -
ラック全体で
root
のパスワードなしSSHを設定します。setup-root-ssh
各サーバーで「ssh key added」というメッセージが表示されます。
-
これで、パスワードを入力せずに、ラックの任意のサーバーですべての
SSH
コマンドを実行できます。dcli
コマンドに加え、scp
を使用してサーバー間でファイルをコピーできます。 -
root
からパスワードなしSSHを削除するには、次のようにします。remove-root-ssh
関連項目:
setup-root-ssh
およびremove-root-ssh
のすべてのパラメータに関する説明。
14.1.2 dcliの基本的な使用方法
この項では、dcli
コマンドのいくつかの基本オプションを示します。オプションの完全なリストは、表14-1を参照してください。
14.1.2.1 ヘルプの表示
dcli
のヘルプ・ページを表示するには、-h
または--help
オプションを使用してdcli
コマンドを入力します。オプションなしでdcli
コマンドを入力すると、コマンドの説明を表示できます。
14.1.2.2 ターゲット・サーバーの識別
コマンドラインまたはファイルでコマンドを実行する場所となるサーバーを識別できます。デフォルト・ターゲット・サーバーのリストを確認するには、-t
オプションを使用します。現在のコマンドでターゲット・サーバーを変更するには、表14-1に記載されている-c
または-g
オプションを使用します。
まとめて管理するサーバーのグループを含むファイルを手動で作成できます。たとえば、サーバー5から18は、サーバー1から4のような特別な機能を持っていないため、まとめて管理できます。
14.1.2.3 コマンドの指定
通常は、ターゲット・サーバーで実行するためにコマンドラインでコマンドを指定します。ただし、よく一緒に使用する一連のコマンドや、複雑な構文のコマンドに対応するため、コマンド・ファイルを作成することもできます。表14-1の-x
オプションを参照してください。
また、-f
オプションを使用すると、ファイルを実行せずにターゲット・サーバーにコピーできます。
14.1.2.4 出力レベルの制御
表示する情報は、-v
オプションを使用して多くしたり、-n
オプションを使用して少なくしたりできます。また、--maxlines
オプションを使用して返される行数を制限することや、-r
オプションを使用して一致する文字列を置き換えることもできます。
次に、Linux date
コマンドの単純な例を使用して、様々な出力レベルの例を示します。
ノート:
1つのサーバー(node07)のみの出力を示します。これらの例の構文によって、すべてのサーバーでdate
コマンドが実行されます。
これはデフォルトの出力で、サーバーの後に日付が表示されます。
# dcli date bda1node07-adm.example.com: Tue Feb 14 10:22:31 PST 2012
最小限の出力では、実行が完了するとOK
が返されます。
# dcli -n date OK: ['bda1node07.example.com']
詳細出力では、コマンドが実行されたときの設定の詳細情報が表示されます。
dcli -v dateoptions.nodes: Noneoptions.destfile: Noneoptions.file: Noneoptions.group: dcserversoptions.maxLines: 100000options.listNegatives: Falseoptions.pushKey: Falseoptions.regexp: Noneoptions.sshOptions: Noneoptions.scpOptions: Noneoptions.dropKey: Falseoptions.serializeOps: Falseoptions.userID: rootoptions.verbosity 1options.vmstatOps Noneoptions.execfile: Noneargv: ['/opt/oracle/bda/bin/dcli', '-g', 'dcservers', '-v', 'date']Success connecting to nodes: ['bda1node07.example.com']...entering thread for bda1node07.example.com:execute: /usr/bin/ssh -l root bda1node07.example.com ' date' ...exiting thread for bda1node07.example.com status: 0bda1node07.example.com: Tue Feb 14 10:24:43 PST 2012]
14.2 dcliの構文
dcli [option] [command]
パラメータ
- option
-
表14-1に説明されているオプション。すべてのオプションを省略して現在のラックにあるすべてのサーバーでコマンドを実行できます。
- command
-
オペレーティング・システム・プロンプトから実行する任意のコマンド。コマンドに句読点や特殊文字が含まれる場合、コマンドを二重引用符で囲ってください。
バックスラッシュ(\)は、エスケープ文字です。シェルによる解釈を避けるため、コマンドラインでは次の特殊文字の前にバックスラッシュを付けてください。コマンド・ファイルではバックスラッシュは必要ありません。コマンド・ファイルの詳細は、
-x
オプションを参照してください。$
(ドル記号)'
(引用符)<
(より少ない)>
(より大きい)( )
(丸カッコ)
表14-1 dcliのオプション
オプション | 説明 |
---|---|
|
ターゲットとして/opt/oracle/bda/cluster-rack-infinibandのサーバーのリストを使用します。「ターゲット・サーバーの識別」を参照してください。 ノート: dcli -C コマンドは、setup-root-ssh -C が実行されたノードでのみ使用できます。
|
|
コマンドが実行される場所となるOracle Big Data Applianceサーバーのカンマ区切りのリストを指定します。 |
|
json-select --jxp=expr --deployshipのexprまたはcloud。 |
|
|
|
ターゲット・サーバーのユーザーのホーム・ディレクトリにコピーするファイルを指定します。ファイルは実行されません。 |
|
コマンドが実行される場所となるOracle Big Data Applianceサーバーのリストを含むファイルを指定します。ファイルでサーバー名またはIPアドレスを使用できます。 |
|
コマンドの説明を表示します。 |
|
各サーバーの |
|
別のサーバーにログインするためのユーザーIDを指定します。デフォルトIDは |
|
複数のサーバーで実行されるコマンドによって表示される出力の最大行数を指定します。デフォルトは10,000行です。 |
|
エラー以外のメッセージの出力を短縮します。サーバーから通常の出力が返される場合(リターン・コード
|
|
指定した正規表現と一致する行で出力をサーバー名に置き換えます。 |
|
SSHに渡されるオプションの文字列を指定します。 |
|
セキュア・コピー(SCP)に渡されるオプションの文字列を指定します(これらのオプションがsshoptionsと異なる場合)。 |
|
コマンドがサーバーでシリアル実行されます。デフォルトはパラレル実行です。 |
|
ターゲット・ノードをスペース区切りでリストします。 |
|
ターゲット・ノードをリストします。 |
|
ターゲット・サーバーの |
|
すべてのメッセージの詳細バージョンを表示します。 |
|
|
|
Linuxの仮想メモリー統計ユーティリティ(
--vmstat="-a 3 5"
|
|
ターゲット・サーバーのユーザーのホーム・ディレクトリにコピーして実行するコマンド・ファイルを指定します。 |
14.3 dcliの戻り値
-
0
: コマンドはすべてのサーバーで正常に実行されました。 -
1
: 1つ以上のサーバーにアクセスできなかったか、リモート実行で0 (ゼロ)以外の値が返されました。応答のなかったサーバーがメッセージにリストされます。他のサーバーでは実行が継続されます。 -
2
: ローカル・エラーによって、コマンドの実行が抑止されました。
ローカルのdcli
プロセスに割り込むと、リモート・コマンドが出力やステータスを返すことなく継続される可能性があります。
14.4 dcliの例
次に、dcli
ユーティリティの例を示します。
次の例では、ターゲット・サーバーのデフォルト・リストが返されます。
# dcli -t Target nodes: ['bda1node01-adm.example.com', 'bda1node02-adm.example.com', 'bda1node03-adm.example.com', 'bda1node04-adm.example.com', 'bda1node05-adm.example.com', 'bda1node06-adm.example.com', 'bda1node07-adm.example.com', 'bda1node08-adm.example.com', 'bda1node09-adm.example.com']
次の例では、すべてのサーバーの温度をチェックします。
# dcli 'ipmitool sunoem cli "show /SYS/T_AMB" | grep value' bda1node01-adm.example.com: value = 22.000 degree C bda1node02-adm.example.com: value = 22.000 degree C bda1node03-adm.example.com: value = 22.000 degree C bda1node04-adm.example.com: value = 23.000 degree C . . .