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を設定するには、次の手順を設定します。

  1. PuTTYなどのユーティリティを使用してOracle Big Data Applianceサーバーに接続します。SSHの接続タイプを選択します。

  2. rootとしてログインします。

  3. ラック全体でrootのパスワードなしSSHを設定します。

    setup-root-ssh
    

    各サーバーで「ssh key added」というメッセージが表示されます。

  4. これで、パスワードを入力せずに、ラックの任意のサーバーですべてのSSHコマンドを実行できます。dcliコマンドに加え、scpを使用してサーバー間でファイルをコピーできます。

  5. 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のオプション

オプション 説明

-C

ターゲットとして/opt/oracle/bda/cluster-rack-infinibandのサーバーのリストを使用します。「ターゲット・サーバーの識別」を参照してください。

ノート:

dcli -Cコマンドは、setup-root-ssh -Cが実行されたノードでのみ使用できます。

-c nodes

コマンドが実行される場所となるOracle Big Data Applianceサーバーのカンマ区切りのリストを指定します。

-j JSON expr

json-select --jxp=expr --deployshipのexprまたはcloud。

-d destfile

-fオプションのターゲット・ディレクトリまたはファイル名を指定します

-f file

ターゲット・サーバーのユーザーのホーム・ディレクトリにコピーするファイルを指定します。ファイルは実行されません。-lオプションを参照してください。

-g groupfile

コマンドが実行される場所となるOracle Big Data Applianceサーバーのリストを含むファイルを指定します。ファイルでサーバー名またはIPアドレスを使用できます。

-h--help

コマンドの説明を表示します。

-k

各サーバーの/root/.ssh/authorized_keysファイルにsshキーをプッシュします。より簡単な別の方法については、「パスワードなしSSHの設定」を参照してください。

-l userid

別のサーバーにログインするためのユーザーIDを指定します。デフォルトIDはrootです。

--maxlines=maxlines

複数のサーバーで実行されるコマンドによって表示される出力の最大行数を指定します。デフォルトは10,000行です。

-n

エラー以外のメッセージの出力を短縮します。サーバーから通常の出力が返される場合(リターン・コード0)、サーバー名のみが表示されます。

-nオプションと-rオプションを一緒に使用することはできません。

-r regexp

指定した正規表現と一致する行で出力をサーバー名に置き換えます。

-s sshoptions

SSHに渡されるオプションの文字列を指定します。

--scp=scpoptions

セキュア・コピー(SCP)に渡されるオプションの文字列を指定します(これらのオプションがsshoptionsと異なる場合)。

--serial

コマンドがサーバーでシリアル実行されます。デフォルトはパラレル実行です。

-T

ターゲット・ノードをスペース区切りでリストします。

-t

ターゲット・ノードをリストします。

--unkey

ターゲット・サーバーのauthorized_keyファイルからキーを削除します。

-v

すべてのメッセージの詳細バージョンを表示します。

--version

dcliのバージョン番号を表示します。

--vmstat=VMSTATOPS

Linuxの仮想メモリー統計ユーティリティ(vmstat)の構文を表示します。このコマンドでは、プロセス、仮想メモリー、ディスク、トラップおよびCPUアクティビティの情報が返されます。

vmstatコマンドを入力する場合、そのオプションを引用符で囲ってください。次に例を示します。

--vmstat="-a 3 5"

vmstatの詳細は、Linuxのドキュメントを参照してください。

-x execfile

ターゲット・サーバーのユーザーのホーム・ディレクトリにコピーして実行するコマンド・ファイルを指定します。-lオプションを参照してください。

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
          .
          .
          .