dcli
ユーティリティは、Oracle Big Data Appliance上のサーバー・グループ全体でコマンドを実行して出力を返します。dcli
は第7章で使用します。
この章の内容は次のとおりです。
dcli
ユーティリティは、管理(eth0)インタフェースを使用して複数のOracle Big Data Applianceサーバーに対してコマンドを実行し、接続を確立します。任意のサーバーからユーティリティを実行できます。
dcli
ユーティリティでは、ローカル・サーバーとすべてのターゲット・サーバー間にパスワードなしセキュア・シェル(SSH)が必要です。ローカル・サーバーでdcli
ユーティリティを実行すると、dcli
で指定したコマンドがターゲット・サーバーで実行されます。
2つのスクリプト(setup-root-ssh
およびremove-root-ssh
)によって、Oracle Big Data ApplianceでSSHを簡単に使用できます。これらのスクリプトは、dcli
でも使用される2つのオプションを受け入れます。
-C
: Hadoopクラスタのすべてのサーバーをターゲットに設定します。
-g
: ユーザー定義のサーバー・セットをターゲットに設定します。
これらのオプションの詳細は、表13-1を参照してください。
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
この項では、dcli
コマンドのいくつかの基本オプションを示します。オプションの完全なリストは、表13-1を参照してください。
dcli
のヘルプ・ページを表示するには、-h
または--help
オプションを使用してdcli
コマンドを入力します。オプションなしでdcli
コマンドを入力すると、コマンドの説明を表示できます。
コマンドラインまたはファイルでコマンドを実行する場所となるサーバーを識別できます。デフォルト・ターゲット・サーバーのリストを確認するには、-t
オプションを使用します。現在のコマンドでターゲット・サーバーを変更するには、表13-1に記載されている-c
または-g
オプションを使用します。
まとめて管理するサーバーのグループを含むファイルを手動で作成できます。たとえば、サーバー5から18は、サーバー1から4のような特別な機能を持っていないため、まとめて管理できます。
通常は、ターゲット・サーバーで実行するためにコマンドラインでコマンドを指定します。ただし、よく一緒に使用する一連のコマンドや、複雑な構文のコマンドに対応するため、コマンド・ファイルを作成することもできます。表13-1の-x
オプションを参照してください。
また、-f
オプションを使用すると、ファイルを実行せずにターゲット・サーバーにコピーできます。
表示する情報は、-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]
dcli [options] [command]
パラメータ
表13-1に記載されているオプション。すべてのオプションを省略して現在のラックにあるすべてのサーバーでコマンドを実行できます。
オペレーティング・システム・プロンプトから実行する任意のコマンド。コマンドに句読点や特殊文字が含まれる場合、コマンドを二重引用符で囲ってください。
バックスラッシュ(\)は、エスケープ文字です。シェルによる解釈を避けるため、コマンドラインでは次の特殊文字の前にバックスラッシュを付けてください。コマンド・ファイルではバックスラッシュは必要ありません。コマンド・ファイルの詳細は、-x
オプションを参照してください。
$
(ドル記号)'
(引用符)<
(より小さい)>
(より大きい)( )
(カッコ)オプション | 説明 |
---|---|
|
コマンドが実行される場所となるOracle Big Data Applianceサーバーのカンマ区切りのリストを指定します。 |
|
ターゲットとして/opt/oracle/bda/cluster-rack-infinibandのサーバーのリストを使用します。「ターゲット・サーバーの識別」を参照してください。 |
|
|
|
ターゲット・サーバーのユーザーのホーム・ディレクトリにコピーするファイルを指定します。ファイルは実行されません。 |
|
コマンドが実行される場所となるOracle Big Data Applianceサーバーのリストを含むファイルを指定します。ファイルでサーバー名またはIPアドレスを使用できます。 |
|
コマンドの説明を表示します。 |
|
各サーバーの/root/.ssh/authorized_keysファイルに |
|
別のサーバーにログインするためのユーザーIDを指定します。デフォルトIDは |
|
複数のサーバーで実行されるコマンドによって表示される出力の最大行数を指定します。デフォルトは10,000行です。 |
|
エラー以外のメッセージの出力を短縮します。サーバーから通常の出力が返される場合(リターン・コード
|
|
指定した正規表現と一致する行で出力をサーバー名に置き換えます。 |
|
SSHに渡されるオプションの文字列を指定します。 |
|
セキュア・コピー(SCP)に渡されるオプションの文字列を指定します(これらのオプションがsshoptionsと異なる場合)。 |
|
コマンドがサーバーでシリアル実行されます。デフォルトはパラレル実行です。 |
|
ターゲット・サーバーをリストします。 |
|
ターゲット・サーバーのauthorized_keyファイルから鍵を削除します。 |
|
すべてのメッセージの詳細バージョンを表示します。 |
|
|
|
Linuxの仮想メモリー統計ユーティリティ(
--vmstat="-a 3 5"
|
|
ターゲット・サーバーのユーザーのホーム・ディレクトリにコピーして実行するコマンド・ファイルを指定します。 |
0
: コマンドはすべてのサーバーで正常に実行されました。
1
: 1つ以上のサーバーにアクセスできなかったか、リモート実行で0 (ゼロ)以外の値が返されました。応答のなかったサーバーがメッセージにリストされます。他のサーバーでは実行が継続されます。
2
: ローカル・エラーによって、コマンドの実行が抑止されました。
ローカルの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 . . .