dcliユーティリティは、Oracle Big Data Cloud Machine上のサーバー・グループ全体でコマンドを実行し、出力を戻します。
この章の構成は、次のとおりです。
dcliユーティリティの概要
dcli
ユーティリティは、Oracle Big Data Cloud Machineクラスタ内のノードのグループにわたってコマンドを実行し、出力を戻します。 dcli
を使用して、クラスタ上のソフトウェアを再インストールまたは再構成します。
パスワードなしSSHの設定
dcli
ユーティリティには、ローカル・サーバーとすべてのターゲット・サーバーの間にパスワードなしのSecure Shell(SSH)が必要です。 dcli
ユーティリティをローカル・サーバー上で実行すると、dcli
で指定されたコマンドがターゲット・サーバー上で実行されます。
2つのスクリプトは、Oracle Big Data Cloud MachineでのSSHの使用を容易にします: setup-root-ssh
およびremove-root-ssh
。 これらのスクリプトは、dcli
でも使用される2つのオプションを受け入れます:
-C
: Hadoopクラスタ内のすべてのサーバーを対象とします
-g
: ユーザー定義のサーバー群を対象とします
これらのオプションの詳細については、「表4-*」を参照してください。
注意:
MammothおよびMammoth Reconfigurationユーティリティには、リモートのroot
アクセスが必要です。 ただし、Oracle Big Data Cloud Machineは通常の操作では必要ありません。 rootのパスワードなしSSHを設定するには:
PuTTYまたは同様のユーティリティを使用してノードに接続します。 SSH接続タイプを選択します。 「Secure Shell(SSH)を使用したクラスタ・ノードへの接続」を参照してください。
root
としてログインします。
クラスタ全体でrootのパスワードなしSSHを設定します:
# setup-root-ssh
各サーバーからssh key added
というメッセージが表示されます。
これで、パスワードを入力せずにラック内の任意のサーバー上で任意のssh
コマンドを実行できるようになりました。 dcli
コマンドに加えて、scp
を使用してサーバー間でファイルをコピーすることができます。
root
からパスワードなしのSSHを削除するには:
# remove-root-ssh
setup-root-sshとremove-root-sshの完全なパラメータの説明も参照してください。
dcliの基本的な使い方
ヘルプの参照
dcli
ヘルプ・ページを表示するには、-h
または--help
オプションを指定してdcli
コマンドを入力します。 オプションなしでdcli
コマンドを入力すると、コマンドの説明を見ることができます。
ターゲット・サーバーの特定
コマンドを実行するサーバーをコマンドラインまたはファイルで指定できます。 デフォルトのターゲット・サーバーのリストについては、 -tオプションを使用してください。 現行コマンドのターゲット・サーバーを変更するには、「表4-*」で説明されている-c
または-g
オプションを使用します。
一緒に管理するサーバーのグループを持つファイルを手動で作成することができます。 たとえば、サーバー1〜4のような特別な機能がないため、サーバー5〜18を一緒に管理することができます。
コマンドの指定
通常は、コマンドラインでターゲット・サーバー上で実行するコマンドを指定します。 ただし、頻繁に一緒に使用する一連のコマンド用のコマンド・ファイルを作成することも、複雑な構文のコマンド用に作成することもできます。 「表4-*」の-x
オプションを参照してください。
また、-f
オプションを使用してファイルを実行することなく、ターゲット・サーバーにファイルをコピーすることもできます。
出力レベルの制御
-v
オプションを使用して、または-n
オプションを使用してより多くの情報をリクエストすることができます。 --maxlines
オプションで返される行数を制限するか、一致する文字列を-r
オプションで置き換えることもできます。
次に、さまざまな出力レベルの例を簡単な例を使って示します: Linuxのdateコマンド。
注意:
1つのサーバー(node07)からの出力のみが表示されます。 これらの例の構文は、すべてのサーバーでdate
コマンドを実行します。 これはデフォルトの出力で、サーバーの後ろに日付が表示されます。
# dcli date
bda1node07-adm.example.com: Tue Feb 14 10:22:31 PST 2016
最小限の出力は、実行が完了するとOK
を返します:
# dcli -n date
OK: ['bda1node07.example.com']
Verbose出力は、コマンドが実行された設定に関する詳細な情報を提供します:
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の構文
dcli [option] [command]
パラメータ
option
command
オペレーティング・システムのプロンプトから実行されるコマンド。 コマンドに区切り記号または特殊文字が含まれている場合は、コマンドを二重引用符で囲みます。
バックスラッシュ(\)はエスケープ文字です。 シェルによる解釈を防ぐために、コマンド行に次の特殊文字の前にバックスラッシュを付けます。 コマンド・ファイルにバックスラッシュは必要ありません。 コマンド・ファイルについては、-x
オプションを参照してください。
$ (ドル記号)
' (引用符)
<(より小さい)
> (より大きい)
( ) (カッコ)
dcliのオプション
オプション | 説明 |
---|---|
-c nodes |
コマンドが実行されるOracle Big Data Cloud Machineノードのコンマ区切りリストを指定 |
-C |
|
-d destfile |
|
-f file |
ターゲット・ノードのユーザー・ホーム・ディレクトリにコピーするファイルを指定します。 ファイルは実行されません。 |
-g groupfile |
コマンドが実行されるOracle Big Data Cloud Machineノードのリストを含むファイルを指定します。 ファイル内のサーバー名またはIPアドレスを使用できます。 |
-h, --help |
コマンドの説明を表示 |
-k |
|
-l userid |
別のサーバーにログインするためのユーザーIDを指定します。 デフォルトのIDは |
--maxlines=maxlines |
複数のサーバーで実行されるコマンドから表示される出力の最大行を識別します。 デフォルトは10、000行です。 |
-n |
エラー以外のメッセージの出力を省略します。 サーバーが通常の出力を戻すときには、サーバー名のみが表示されます(戻りコード
|
-r regexp |
指定された正規表現に一致する行のサーバー名を出力に置き換えます。 |
-s sshoptions |
SSHに渡されるオプションの文字列を指定 |
--scp=scpoptions |
これらのオプションが |
--serial |
サーバー上で実行を直列化します。 デフォルトはパラレル実行です。 |
-t |
ターゲット・サーバーを一覧表示 |
--unkey |
ターゲット・サーバーの |
-v |
すべてのメッセージの冗長バージョンを表示 |
--version |
|
--vmstat=VMSTATOPS |
Linux仮想メモリー統計ユーティリティ(
--vmstat="-a 3 5"
|
-x execfile |
ユーザーのホーム・ディレクトリにコピーしてターゲット・サーバーで実行するコマンド・ファイルを指定します。 |
dcliの戻り値
0
: コマンドはすべてのサーバーで正常に実行されました。
1
: 1つ以上のサーバーにアクセスできないか、リモート実行が0以外の値を返しました。 応答しないサーバーが一覧表示されます。 実行は他のサーバーでも継続されます。
2
: ローカル・エラーにより、コマンドの実行が妨げられました。
ローカルのdcliプロセスを中断すると、リモート・コマンドは出力またはステータスを返さずに続行することができます。
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
.
.
.