目次


IBM InfoSphere Streams 3.2ハンズオン・ラボ

入門編【ラボ1】

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: IBM InfoSphere Streams 3.2ハンズオン・ラボ

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:IBM InfoSphere Streams 3.2ハンズオン・ラボ

このシリーズの続きに乞うご期待。

このラボでは、シンプルなシナリオに合わせ、アプリケーションを開発します。ここでのシナリオは、車両のロケーション、速度、およびその他のセンサーに関するデータをファイルから読み取り、特定の車両の観測値を探し、選んだ観測値を別のファイルに書き込むというものです。これは厳密に言うとデータのストリームではありませんが、ファイル I/O が Streams アプリケーションの開発において、なぜ、どのように重要となるのかを考察し、後ほどデータ・ストリームのシミュレーションに、どのように活用できるのかをお見せします。

Streams Instance を開始します。Streams Studio を開き、ビュー (ウィンドウ) を確認します。SPL アプリケーション・プロジェクトを作成し、3 つのオペレーターがあるアプリケーション・グラフを作成し、オペレーターを構成します。次に、アプリケーションを実行し、結果を検証します。

1.1 実践開始

このラボでは、streamsadmin アカウントを使用します。ログイン後、以下の画像のように、いくつかアイコンがある状態のデスクトップが表示されます。

  1. VMware イメージにログインします。
    ユーザー: Streams Administrator (streamsadmin)
    パスワード: passw0rd (password のアルファベット O を、ゼロにしたもの)
図1.ログイン後のデスクトップ

以前に作成した Streams インスタンスを開始すると、ランタイム環境が準備され、アプリケーションの実行をサブミットできるようになります。このインスタンスは、少数の Linux サービス (「デーモン」) であり、サービスは、指定したホスト・セット上で実行され、これをコントロールします。また、セキュリティーとユーザー・グループを管理する構成設定をコントロールし、リソースとポート番号の共有なども行います。今回は、ホストは 1 つしかなく、インスタンスは streamsadmin ユーザーにしか見えません。

  1. 「Streams_Instances」デスクトップ・ランチャーをダブルクリックします。
図 2. Streams Instances デスクトップ・ランチャー

ウィンドウが開き、Streams (選択済み) という名前で、ステータスが「停止済み (Stopped)」のインスタンスが表示されます。「開始(Start)」をクリックします。進行ダイアログが消えると、ステータスが「開始済み (Started)」に変わります。「終了 (Exit)」をクリックします。

図 3. InfoSphere Streams Instances Manager

1.2 Streams Studio の開始

次に、Studio を開始し、そのフィーチャーをいくつか確認して、最初のアプリケーションを作成してみます。

  1. Streams Studio」デスクトップ・ランチャーをダブルクリックしてください。
図 4. Streams Studio デスクトップ・ランチャー

ワークスペース・ランチャー (Workspace Launcher)」の「ワークスペース (Workspace)」が /home/streamsadmin/Workspaces/workspace1 に設定されているようにし、「OK」をクリックします。

図 5. ワークスペース・ランチャー

Eclipse ベースの Studio アプリケーションが開きます。Eclipse のウィンドウは、複数の「ビュー」、つまりサブウィンドウに分かれています。複数の「タブ」が付いてるものもあります。左側には、「プロジェクト・エクスプローラー (Project Explorer)」と「Streams エクスプローラー (Streams Explorer)」という 2 つのタブがあり、中央は、エディター (コードとグラフ用) と「タスク・ランチャー (Task Launcher)」(次のセクションを参照してください) です。右側は「アウトライン (Outline)」」ビュー (SPL ファイルをエディターに入れるまでは何も表示されません)で、一番下は「コンソール (Console)」ビューと他に 2 つのビューがあるタブ付きウィンドウです。Eclipse では、このような配置全体を「パースペクティブ」と呼びますが、これは Streams Studio パースペクティブになります。

1.3 ビッグデータ用タスク・ランチャー (Task Launcher for Big Data)

このリリースには、開発者やその他のユーザーがすぐに利用を開始できるようにする、タスク指向のガイド一式が、新しい機能として備わっています。そのガイドのなかに、ビッグデータ用タスク・ランチャー(Task Launcher for Big Data) があります。Studio を開くと、デフォルトで 「ビッグデータ用タスク・ランチャー (Task Launcher for Big Data)」 が開くようになっています。

図 6. タスク・ランチャー
  1. ここで少々時間をかけて、いろんなタブを見てみてください。特に、各タブの「詳細情報 (Learn More)」グループにあるリンクから、Studio の「ヘルプ(Help)」ビューが表示されるので、他のタスクについても見てみてください。
    ファースト・ステップ (First Steps)」」の下にあるほとんどのタスクは既に完了しています。これらのタスクは、Streams のインストール・プロセス (Studio 外) が完了した際にも、別の「ファースト・ステップ(First Steps)」ユーティリティーに表示されます。

「タスク・ランチャー (Task Launcher)」から次の 2 つのタスクを開始します。最初に、Streams プロジェクト (Eclipse ワークスペースのディレクトリー・ツリーにあるファイル集) を作成し、次に、そのプロジェクトのアプリケーションを作成します。

  1. 新規 Streams プロジェクトの作成 (Create a new Streams project)」をクリックすると、このタスクは「概要 (Overview)」タブと、「クイック・リンク(Quick Links)」下の「開発 (Develop)」にも表示されます。
  2. 新規 SPL プロジェクト (New SPL Project)」ウィザードで、「プロジェクト名 (Project name)」に、Project1と入力します。「デフォルト・ロケーションの使用 (Use default location)」にはチェックが入ったままにしておきます。「次へ (Next)」をクリックします。
図 7. SPL プロジェクト・ウィザード
  1. SPL プロジェクト構成 (SPL Project Configuration)」パネルで、「ツールキットの名前 (Toolkit name)」を Toolkit1 へと変更し、「依存関係(Dependencies)」フィールドの中にある「ツールキットの場所 (Toolkit Locations)」からチェックを外します。残りすべての項目は、チェックが外れたままにします。「完了(Finish)」をクリックします。
図 8. SPL プロジェクト構成パネル

新規プロジェクトが「プロジェクト・エクスプローラー (Project Explorer)」ビューの左側に表示されます。

  1. 「ビッグデータ用タスク・ランチャー (Task Launcher for Big Data)」の「開発 (Develop)」タブを開き、「SPL アプリケーションの作成 (Create an SPL application)」をクリックします。
図 9. タスク・ランチャー

新規メイン・コンポジット (New Main Composite)」ウィザードが「ヘルプ (Help)」ビューとともに表示されます。このウィザードは、多数の手順 (名前空間、SPL ソース・ファイル、およびメイン・コンポジットの作成) にワンパスで対応してくれます。

  1. 新規メイン・コンポジット (New Main Composite)」ウィザードで、以下を入力します。
    • 「プロジェクト名 (Project name)」: Project1 (「参照… (Browse…)」ボタンをクリックします)
      「名前空間 (Namespace)」: my.name.space
      「メイン・コンポジット (Main Composite)」の「名前 (Name)」: MainComposite1 (「メイン・コンポジットの生成(Generate Main Composite)」にはチェックを入れたままにします)
      「ソース・タイプ (Source Type)」: SPL source (*.spl)
      「ソース・ファイル (Source File)」の名前 : SourceFile1.spl (「メイン・コンポジットの名前を使用 (Use name of main composite)」のチェックは外します)
    完了 (Finish)」をクリックします。
図 10. 新規メイン・コンポジット・ウィザード

コード・モジュール SourceFile1.spl がグラフィカル・エディター内で開きます。この際、領域内のMainComposite1は空の状態です。エディター用にさらなるスペースを確保したい場合には、右側の「ヘルプ (Help)」ビューを閉じます。「ビッグデータ用タスク・ランチャー (Task Launcher for Big Data)」も閉じてかまいません。

1.4 「プロジェクト・エクスプローラー (Project Explorer)」ビュー

では、Studio ビューのうちの1つである「プロジェクト・エクスプローラー (Project Explorer)」ビューを見てみましょう。このビューでは、ワークスペース内にある全プロジェクトに関する、オブジェクト・ベースとファイル・ベースのビューを表示します。

図 11. プロジェクト・エクスプローラー・ビュー
  1. プロジェクト・エクスプローラー (Project Explorer)」の左側にある白抜き三角印のアイコンをクリックして、Project1 を展開します。
    • 次の階層には、名前空間とリソース (ディレクトリーとファイル) が表示されます。
  2. Project1 の下にある名前空間 my.name.space を展開します。
    • 次の階層には、メイン・コンポジットと、タイプや関数といったその他のオブジェクトが表示されます。
  3. my.name.space の下にあるメイン・コンポジット MainComposite1 を展開します。
    • 次の階層には、ビルド構成が表示されます。ここでは、デフォルトで作成されている「分散(Distributed)」ひとつだけが表示されます。デバッグ用、スタンドアロン実行用など、複数のビルドを作成できます。
  4. リソース (Resources)」を展開します。
    • 次の階層には、現在のアプリケーションまたはツールキットの説明が含まれる 2 つの XML ファイルとともに、ディレクトリーが表示されます (Streams では、プロジェクト編成およびメタデータの観点では、ツールキットとアプリケーションは同じです)。このラボで使用する唯一のディレクトリーは、データ・ディレクトリーです。これは、データ・ファイル入力/出力のデフォルト・ロケーションになります (絶対パスが指定されていない場合)。

1.5 グラフィカル・エディター内でのアプリケーションの開発

これで、簡単なアプリケーションの構築を開始する準備が整いました。要件の概要は以下の通りです。

  • 車両ロケーション・データをファイルから読み取る。
  • 車両 ID ごとに、車両ロケーション・データをフィルタリングする。
  • フィルタリングした車両ロケーション・データをファイルへ書き込む。

指示詳細は、以下の通りです。

  • グラフィカル・エディター内でアプリケーション・グラフを設計する。
  • 次の 3 つのオペレーター (オペレーターとは、アプリケーション・グラフの基本的な構成要素です。) を使用する: ファイルを読み取るオペレーター(FileSource)、ファイルを書き込むオペレーター (FileSink)、フィルタリングを行うオペレーター (Filter)。
  • 以下の手順を実施します。
    • いくつかのストリームのスキーマとしてサービスを提供するロケーション・データの新規タイプを定義する。
    • 必要なオペレーターをエディターにドロップする。
    • グラフを「つなぐ」のに必要となるストリーム接続を確立する。
    • グラフ内のストリームのスキーマを定義する。
    • 各オペレーターのパラメーターおよびその他の詳細を指定する。
表 1. 追加仕様: 車両ロケーション・データのストリーム・タイプ
名前タイプコメント
idrstring車両 ID (8 ビットの無変換文字列であるrstringを使用)
timerstring観測のタイムスタンプ
latitudefloat64緯度 (角度)
longitudefloat64経度 (角度)
speedfloat64車両の速度 (km/h)
headingfloat64走行方向 (角度、北から時計回り)

このラボは、初歩的な探索を目的としており、ここで SPL 構文とコード化のベスト・プラクティスについて考察することはありません。しかし、その中でも触れておくに値するベスト・プラクティスがひとつあります。それは、各ストリームの宣言内で、ストリームごとに別々のスキーマ (ストリーム・タイプ) を定義するのではなく、事前にタイプを作成しておくことで、各ストリームがそのタイプを参照すれば済むようにできるという方法です。こうすることで、コードが重複するのを回避でき、一貫性を高め、より維持しやすくなります。

このような観点から、まず、アプリケーションを流れる主要タプルとなる車両ロケーション・データ用のタイプを作成します。タイプは、上述の表 1の仕様に基づいて作成します。新しいタイプの名前は、LocationType とします。

  1. SourceFile1.spl のグラフィカル・エディターの領域、メイン・コンポジット (MainComposite1) の外の部分 を (どこでもいいので) 右クリックし、「編集(Edit)」を選択します。
    • そうすると、一番上に「プロパティー(Properties)」ビューが表示されます。以下のように表示されているか確認してください。もし違う場合はそれを終了し、もう一度グラフィカル・エディターで、メイン・コンポジットの外の部分を右クリックしてみてください。
図 12. プロパティー・ビュー
  1. プロパティー (Properties)」ビューで「タイプ (Types)」タブをクリックします。
    • 名前 (Name)」の下にあるフィールド Add new type… を選択します。
    • LocationType とキーボードで入力し、Enter キーを押します。
    • 名前 (Name)」欄、LocationType の下の Add attribute… とされているフィールドを選択します。
    • id をキーボードで入力し、Tab キーを押して「タイプ (Type)」欄へと進みます。
    • rstring をキーボード入力し、Tab キーを押して次の名前フィールドに進みます。
  1. 引き続き、キーボード入力し、Tab キーを用いて次のフィールドへ移動する形で、11 ページの表 1 に記載の属性名とタイプを入れていきます。
図 13. プロパティー・ビュー

これで、タプル・タイプ LocationType が、名前空間 my.name.space 内のどの (メイン) コンポジットでも、ストリーム・タイプとして使えるようになりました。13 ページの 表 2 に記載の仕様を指定して、アプリケーション・グラフを構築する準備が整います。「プロパティー (Properties)」ビューは開いたままにしておいてください。

表 2. 追加仕様: その他のパラメーター
パラメーター
入力ファイル/home/streamsadmin/data/all.cars
出力ファイルfiltered.cars
ファイル形式CSV (入出力両方とも)引用符を出力しない
フィルター条件車両 ID は、“C101” または “C133”
ストリーム名 Observations (フィルター前)
Filtered (フィルター後)

この情報で、アプリケーション全体を作成できます。グラフィカル・エディターを使用します。SPL コード化についてはこのラボでは取り扱いません。

使用するオペレーターをエディター内に入れ込むには、パレット内でオペレーターを見つける必要があります。ここでは、FileSourceFileSinkFilter の 3 つのオペレーターを探してください。パレットの内容をフィルターすると、使用したいものをすぐに見つけることができます。

図 14. グラフィカル・エディター
  1. SourceFile1.spl のグラフィカル・エディターのパレット・フィルター欄 (「検索 (Find)」と表示あり) で、「fi」とキーボード入力します。これにより、必要な 3 つのオペレーターのみにパレットを絞り込めます。オペレーターをそれぞれ順番に選択して、領域内の MainComposite1 メイン・コンポジットへとドラッグします。メイン・コンポジット内でしたら、どこでも構いません。エディターでオペレーターに、FileSource_n、FileSink_n、Filter_n と名前が付けられます (n には、1、2、もしくは 3 が入ります)。
図 15. グラフィカル・エディター: レイアウト・ボタン
図 16. グラフィカル・エディター: レイアウト・ボタンのクリック前と後
  1. FileSource_n’ の出力と Filter_n’ の入力を接続するストリームを追加します。

出力ポートはオペレーターの右側にある黄色の小さなボックスで示されており、入力ポートは左側の黄色の小さなボックスで示されています。ストリームを作成するには、出力ポートをクリックし、ドラッグを開始します。そうすると、カーソルが十字の印 + に変わり、出力ポートを始点とした線を引きます。ドラッグしながらマウス・ボタンを解放し、別のオペレーターの入力ポート (カーソルを置くと緑色になります) をクリックすると、接続が完了します。これで、2 つのポートが破線で接続されます。破線は、ストリームがあるものの、タイプが未定義であることを示しています。

  1. Filter_n から FileSink_n へ別のストリームを追加します。「レイアウト (Layout)」 をクリックし、「内容に合わせる (Fit to Content)」 をクリックして、グラフを編成します。
図 17. グラフィカル・エディター: レイアウト
図 18. グラフィカル・エディター: SPLコード・ポップアップ
図 19. グラフィカル・エディター: 吹き出しの切り替えボタン

これで、グラフ全体ができましたが、詳細についてはまだ指定されていません。

  1. Ctrl+S か、「保存 (Save)」ツールバー・ボタン、もしくは、メニューの「ファイル (File)」 > 「保存(Save)」のいずれかで、これまでの作業を保存してください。

メイン・コンポジットが赤色に変わり、3 つのオペレーターにエラーが表示されますが、これは想定内の現象です。コードには、オペレーター用およびストリーム・タイプ用のプレースホルダーしか含まれておらず、これらのプレースホルダーが、有効なエントリーではないために起こった現象です。

  1. ストリームの名前とタイプを割り当てるには、FileSource_nFilter_n を接続しているストリーム (破線の矢印) を選択します (場合によって、カーソルがエンクロージング・メイン・コンポジットではなく、ストリームを選択するまで、何回か試行を繰り返す必要があります)。

そうすると、先ほど LocationType を作成するため使用した「プロパティー (Properties)」ビューに、「ストリーム (Stream)」プロパティーが表示されます。編集するグラフが見えにくくならないように、必要に応じてビューの配置やサイズを変えます (「プロパティー(Properties)」ビューを閉じてしまった場合は、ストリームを右クリックし、「編集 (Edit)」を選択して再度ビューを表示してください)。

図 20. プロパティー・ビュー
  1. エディターが自動的に生成するプレースホルダー名よりも、分かりやすいストリーム名を付ける方が賢明です。「プロパティー (Properties)」ビューの「一般(General)」タブで、「名前の変更… (Rename…)」ボタンをクリックします。「名前の変更 (Rename)」ダイアログ・ボックスの「新しい名前の指定 (Specify a new name)」下に Observations と入力して、「OK」をクリックします。
図 21. グラフィカル・エディター
  1. スキーマ(Schema)」タブをクリックします。ここでスキーマを指定できますが、今回はタイプが作成済みであるため、他のオブジェクトと同様に、そのタイプをグラフィカル・エディター内にドラッグ・アンド・ドロップするだけで結構です。

先ほど入力した fi を削除してパレット・フィルターを空にします。そうすると、すべてのオブジェクトが再び表示されます。「現行グラフ (Current Graph)」下の「スキーマ(Schema)」を展開すると、「LocationType」タイプとともに、グラフ内に 2 つのストリームが表示されます。「LocationType」を選択してグラフへとドラッグし、「Observations」ストリーム (FileSource_n Filter_n の間) 上でドロップします。この際、以下の図のようにストリームの選択ハンドルが緑色に変わったことを確かめてから、ドロップしてください。

図 22. グラフィカル・エディター

引き続き「プロパティー (Properties)」ビューが「スキーマ (Schema)」タブに対して開かれている場合、LocationType の「タイプ (Type)」と、「名前 (Name)」下のプレースホルダーとして <extends> が表示されているはずです。これは、このストリーム・タイプが、名前を付けたタイプ LocationTypeの属性を含まず、代わりに、属性の名前とタイプを伴うスキーマ全体を継承していることを示しています。

  1. ここでも同じようにドラッグ・アンド・ドロップで、LocationType のタイプを他のストリーム (Filter_nFileSink_n の間)へ割り当てます。そのストリームを選択し、「プロパティー (Properties)」ビューにプロパティーを表示させます。

プロパティー (Properties)」ビューで、「一般 (General)」タブを開き、(「名前の変更… (Rename…)」をクリックするなどして) ストリームの名前を Filtered に変更します。

Ctrl+S などの操作で、グラフを保存します。

FileSink_n については引き続きエラーが表示されるため、メイン・コンポジットは赤いままとなっていますが、これも想定内の状態です。このエラーは、FileSink オペレーターにどのファイルを書き込むかをまだ指示していないことに起因します。また、その他のオペレーターについても詳細を指定する必要があります。

  1. グラフィカル・エディターで、FileSink_n を選択します。「プロパティー (Properties)」ビューで、「パラメーター(Param)」タブをクリックします。そうすると、必須パラメーターである「file」が、プレースホルダーの値 parameterValue (有効な値ではないため、エラーの原因となっています) とともに表示されます。parameterValue と表示されるフィールドをクリックし、"filtered.cars" (二重引用符付き) と入力します。

これは (「/」で始まらない) 相対パスであるため、このファイルは、現行プロジェクトの data サブディレクトリーに入る点に注意してください。

  1. __13. さらにもう 2 つパラメーターが必要です。「パラメーターの選択 (Select parameters)」ダイアログで「追加…(Add…)」をクリックし、「format」と「quoteString」 (下にスクロールしないと見えてこないかもしれません) にチェックを入れ、「OK」をクリックします。format 値は、csv (引用符なし。これは、列挙値です) とします。quoteString 値は、false (引用符なし。これは、ブール値です) とします。
図 23. パラメータの選択
図 24. プロパティー・ビュー
  1. FileSource オペレーターにおいて、どのファイルを読み取るかを認識させる必要があります。グラフィカル・エディターで、FileSource_n オペレーターを選択します。「プロパティー(Properties)」ビュー (「パラメーター (Param)」タブ) で、「追加… (Add…)」をクリックします。「パラメーターの選択 (Select parameters)」ダイアログで、「file」と「format」を選択し、「OK」をクリックします。file の値は、"/home/streamsadmin/data/all.cars" (ここに示すとおり、引用符付きで、すべて小文字) とします。format は、csv とします。
  2. Filter オペレーターに対して、何をフィルターするかを指示する必要があります。フィルター条件がないと、あらゆる入力タプルが出力タプルへ、ただコピーされるだけとなります。グラフィカル・エディターで、Filter_n を選択します。「プロパティー (Properties)」ビュー (「パラメーター (Param)」タブ) で、「追加 (Add…)」をクリックします。「パラメーターの選択 (Select parameters)」ダイアログで、「filter」を選択し、「OK」をクリックします。

値のフィールドに、ブール式 id in ["C101","C133"] を入力し、式が true と評価するタプルだけが出力へ渡されるように示唆します (キー・ワード「in」に続けてリストを掲載したこの式は、式の左側に示されたアイテムがリストにあるエレメントと一致する場合にのみ、true の評価を出します)。

図 25. プロパティー・ビュー

保存します。エラーの原因がなくなり、メイン・コンポジットは青になります。これで、使用可能なアプリケーションができあがりました。「プロパティー (Properties)」ビューを終了します。

「プロパティー (Properties)」ビューがあったため見えづらかったかもしれませんが、グラフを保存するたびに、アプリケーションをコンパイルするため「ビルド」が開始されていました。進行状況のメッセージが「コンソール (Console)」ビューに表示されます。上にスクロールすると (「コンソール (Console)」を拡大または最大化表示するといいかもしれません)、エラーのために終了したビルドが赤字のメッセージとともにいくつか表示されているのが分かります。最後のビルドについては、エラーが何も表示されずに完了しているはずです。

図 26. コンソール・ビュー

1.6 アプリケーションの実行

これで、このプログラムの実行 (Streams Studio 用語で言うと「ビルドの起動」) ができるようになりました。

  1. プロジェクト・エクスプローラー (Project Explorer)」で、MainComposite1 を右クリックします (必要に応じて Project1my.name.space を展開します)。「起動 (Launch)」を選択します。「構成の編集 (Edit Configuration)」ダイアログで、「適用 (Apply)」をクリックし、「継続(Continue)」をクリックします。
図 27. プロジェクト・エクスプローラ

進行状況の起動 (Launch progress)」ダイアログがわずかの間表示されます。また「コンソール (Console)」には、ユーザー streamsadmin が所有する streams と呼ばれるインスタンスに対し、ジョブ番号 0 がサブミットされたことが表示されます。

さて、その他に何も動きが見られないため、これまでに行った作業の影響について確認する必要があります。まず、インスタンスで実行中のジョブを確認し、結果を調べてみましょう。

  1. Streams エクスプローラー (Streams Explorer)」 (左側のビューにある 2 番目のタブで、「プロジェクト・エクスプローラー (Project Explorer)」の後ろにあります) に切り替えます。インストール (InfoSphere Streams 3.2.0.0) と、その下にある各エレメント、「使用可能なホスト (Available Hosts)」、「インスタンス (Instances)」、「ツールキットの場所 (Toolkit Locations)」を展開します。
図 28. Streams エクスプローラー

もちろん、この仮想マシンでは、使用可能なホストは 1 つのみです。インスタンスが 1 つであることもご存知かと思います。エントリーを見ると、これがデフォルトのインスタンス (別段の指定がない限り、起動したアプリケーションはここで実行することになります) で、それが実行中の状態であり、どれだけの期間実行中であるかが示されます (ステータスについては、拡大表示しないと見えないかもしれません)。「ツールキットの場所 (Toolkit Locations)」下には、Studio が認識しているすべてのツールキットが表示されます。「標準ツールキットの場所 (Standard Toolkit Location)」は必ずここに存在しますが、それ以外は明示的に指定する必要があります (これを実施するタスクが「タスク・ランチャー (Task Launcher)」にあります)。詳しい資料は別の場所にありますが、「Streams エクスプローラー (Streams Explorer)」では、タイプや関数といったツールキット・アセットに加え、オペレーターとそのパラメーターも表示されます。

  1. streams@streamsadmin を展開すると、エレメントがいくつか表示されますが、ここで確認していただきたいのは一番最後にある 0:my.name.space::MainComposite1 のみです。これは、先ほどサブミットしたばかりのジョブ (実行中のアプリケーションはジョブと呼ばれます) で、ステータスは「正常(Healthy)」となっています (もしそうではない場合、講師に相談し、何が問題となっているか確認してください)。ここにジョブとその構成要素となるオペレーター、およびプロセッシング・エレメント (PE) に関するたくさんの情報がありますが、ここでは、インスタンスを視覚的に見ていきましょう。
図 29. Streams エクスプローラー
  1. default:streams@streamsadmin を右クリックし、「Instance Graph の表示 (Show Instance Graph)」を選択します。

一番下のパネルに新しいビューが開き、グラフィカル・エディターと同様のグラフが表示されますが、ここでは、ライブの情報、インスタンスで実際に何が実行されているかを表示します。複数のアプリケーション (もしくは同アプリケーションの複数のコピー) を起動する場合、そのすべてが表示されることになります。さらに、ランタイム問題があるかどうかなど、データの流れ具合も確認できます。

必要であれば、「Instance Graph」ビューを展開もしくは拡大します。ビューのツールバーにある 「内容に合わせる (Fit to Content)」をクリックします。

図 30. インスタンス・グラフ (完了済みおよび実行中のアプリケーション: すべての PE が正常であるため、ジョブも正常です。)

Instance Graph ではもっとさまざまなことができますが、それについては次のラボで詳しく見ていきます。

  1. Filter_n にカーソルを置くと、データ・フローやその他のメトリックに関する現在の情報が表示されます。さまざまな情報の中で、入力が 1902 にタプルを受信し、出力が 95 のタプルを送信したことが示されています。出力が入力の単なるサブセットであるべきことを考慮すると、この状況は妥当なようです。しかし一方で、入力と出力の現在のタプルレートが 0/秒 となっており、データが現在流れていないことも分かります。それはなぜかというと、all.cars ファイルにあるすべてのデータの読み取りが完了し、それ以上のデータがないためです。
  1. 結果を確認するには、入力データおよび出力データを確認しなければなりません。
    1. トップ・メニューで、「ファイル (File)」 > 「ファイルを開く... (Open File...)」
    2. ファイルを開く (Open File)」ダイアログで、~streamsadmin/data/all.cars を参照するようにし、「OK」をクリックします。

エディター内でファイルが開きます。ファイルには、複数の車両 ID (C127、C128 等) についてのロケーション観測が含まれています。

  1. プロジェクト・エクスプローラー (Project Explorer)」 (左側のビューにある最初のタブ) で、「リソース (Resources)」を展開すると、「data」の下にファイルがあるはずです。ただし、三角アイコンはありません。ビューを更新するには、「data」を右クリックし、「リフレッシュ(Refresh)」を選択します。そうすると、三角アイコンが表示されます。これを展開し、をダブルクリックします。このファイルには、車両 C101 と C133 のみに関する座標と速度が含まれています。
図 31. 入力データ(all.cars)と出力データ(filtered.cars)

ダウンロード可能なリソース


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Information Management, Cloud computing, Linux
ArticleID=968716
ArticleTitle=IBM InfoSphere Streams 3.2ハンズオン・ラボ: 入門編【ラボ1】
publish-date=05072014