IBM Cloud 上の Decision Composer で大きく視野を広げる

IBM Cloud 上で Decision Composer と Apache Hadoop を結合させるコードレス・アプリを構築する

Comments

従来型のビジネス・ルール・アプリケーションでは、クライアント・サーバーからのリクエストごとに処理するレコードは 1 つであり、一度に処理されるデータのサイズは数メガバイトほどです。通常は、これでも問題はありませんが、クラウド・ベースのソリューションがますます増え続ける中、データのサイズはメガバイト単位ではなく、テラバイト単位にまで膨らんでいます。このような膨大なデータを処理する分散型データ処理フレームワークとして進化したのが、Apache Hadoop です。けれども、Hadoop を使い慣れたデータ・サイエンティストたちにとって、また別の新しい要件が生じてきています。それは、大量のデータ・セットに対し、意思決定を迅速にモデル化、作成、テストできるようにすることです。この分野では、Decision Composer とそのグラフィカル意思決定モデリング環境が傑出した存在となっています。注: この記事を作成している時点で、Decision Composer は実験的段階にあります。

このチュートリアルはデータ・サイエンティストに、コードではなくグラフィカル意思決定モデルを使用してビッグデータを分析する可能性を広げます。

Decision Composer と Hadoop を IBM Cloud 上で結合すれば、ルール・ソリューションをビッグデータの世界にまでスケーリングして、クラウド内の大量のデータ・セットを分析する意思決定モデルを、コードを作成することなく迅速に開発できます。

Decision Composer 内で作成した意思決定モデルを Hadoop に統合して、それらの意思決定モデルを Hadoop 上のビッグデータに対して実行できるようにする方法を模索しているとしたら、このチュートリアルがその答えになります。このチュートリアルはデータ・サイエンティストに、コードではなくグラフィカル意思決定モデルを使用してビッグデータを分析する可能性を広げ、以下のメリットをもたらします。

  • 専門的なスクリプトを作成する必要はありません。Decision Composer 内でグラフィカル意思決定モデルを作成してテストし、それらのモデルをビッグデータに対して実行します。
  • Decision Composer が自動的にバージョンを管理し、意思決定モデルに対する変更を制御します。
  • ビジネス・ユーザーとテクニカル・ユーザーの両方が、意思決定モデルを理解できるようになります。

以下の図に、Decision Composer、Business Rules サービス、Hadoop の統合アーキテクチャーを示します。

情報アーキテクチャー図
情報アーキテクチャー図

以下で説明するステップは、図中の番号に対応しています。

  1. Decision Composer を使用して意思決定モデルを作成し、テストします。
  2. 実行可能な意思決定モデルを Business Rules サービスにデプロイします。
  3. 処理するデータを Hadoop 入力フォルダーにアップロードします。
  4. Hadoop ジョブを構成して実行します。
    Business Rules サービスと Hadoop の入力ディレクトリーおよび出力ディレクトリーを指すようにジョブを構成します。Business Rule サービスを介して意思決定モデルを実行する場合は、Cloud モードを true に設定します。各 Map ジョブ内の専用ルール・エンジン内でルールを実行する場合は、Cloud モードを false に設定します。専用エンジンを使用するとパフォーマンスが向上しますが、それには追加ライセンスが必要になります。
  5. 出力フォルダー内の Hadoop 実行結果を表示し、分析します。

必要なもの

以下に示すページがブラウザーに表示されます。

GitHub リポジトリーのスクリーン・キャプチャー
GitHub リポジトリーのスクリーン・キャプチャー

以下の手順に従います。

  1. 「Clone or download (複製またはダウンロード)」ボタンをクリックし、ソース・コードをファイルとしてダウンロードします。
  2. .zip ファイルを開き、quickstart ディレクトリーをローカル・マシンに抽出します。

サンプル・プロジェクト 1: REST を使用してプロジェクトを実行する

Decision Composer プロジェクトを作成する

  1. IBM Cloud にログインし、Decision Composer の URL (https://decision-composer.mybluemix.net) にアクセスします。
  2. Decision Composer の初期画面で、「Load Project (プロジェクトのロード)」項目を選択します。 「New Project (新規プロジェクト)」、「Import sample(s) (サンプルをインポート)」、「Load Project (プロジェクトのロード)」項目を示す画面のスクリーン・キャプチャー
    「New Project (新規プロジェクト)」、「Import sample(s) (サンプルをインポート)」、「Load Project (プロジェクトのロード)」項目を示す画面のスクリーン・キャプチャー
  3. quickstart フォルダー内にある「PNR_Check.dproject」を選択します。以下の図に、プロジェクトの内容が示されています。 PNR 乗客検査スコア・プロジェクトを示す画面のスクリーン・キャプチャー
    PNR 乗客検査スコア・プロジェクトを示す画面のスクリーン・キャプチャー

この意思決定モデルでは、フライト前の飛行機の乗客をプロファイリングします。このモデルは、乗客名簿 (PNR) に採点ルールを適用します。採点の結果、スコアが定義されているしきい値に達している場合、その乗客は検査のために引き留められることになります。

モデルで定義されている入力データ (緑色の楕円) が、意思決定ノード (青色の四角) にフィードされます。「Score Passenger (乗客採点)」意思決定ノードには、乗客を採点するための意思決定テーブルが含まれています。以下の図に、このテーブルを示します。

乗客のスコアを記載する意思決定モデルのテーブルを示す図
乗客のスコアを記載する意思決定モデルのテーブルを示す図

「Stop Passenger (乗客の引き留め)」意思決定ノードには、所定の乗客を検査のために引き留めるかどうかを、その乗客のスコアに基づいて決定する単一のアクション・ルールが含まれています。

「Stop Passenger (乗客の引き留め)」意思決定ノードのルール
「Stop Passenger (乗客の引き留め)」意思決定ノードのルール

この意思決定サービスは、Decision Composer 内でテストすることができます。それには以下の手順に従います。

  1. 現在、設計モードになっているので、「Run (実行)」をクリックしてテスト・モードに切り替えます。
  2. 「Saved inputs (保存されている入力)」ペイン内で (以下を参照)、「Stop Fred (Fred の引き留め)」をクリックします。入力データが取り込まれた以下の画面が表示されます。 Saved inputs (保存されている入力)」ペインのスクリーン・キャプチャー
    Saved inputs (保存されている入力)」ペインのスクリーン・キャプチャー
  3. 「Run Decision (意思決定の実行)」アイコン (矢印を囲む円) をクリックして意思決定サービスを実行します。数秒後に、引き留めるべき乗客を示す以下の画面が表示されます。 引き留めるべき乗客 Fred Flanders のプロファイル照合
    引き留めるべき乗客 Fred Flanders のプロファイル照合

Decision Composer 内で意思決定サービスを実行したので、次は、同じサービスを Hadoop 内で実行します。

Business Rules サービスを作成する

  1. IBM Cloud アカウントにログインしてカタログを表示し、「Business Rules」サービスを追加します。
  2. 以下の例に示されているように、表示されるユーザー名と、短い形式と長い形式 (基本認証) の両方のパスワードをメモします。パスワードのテキストを表示するには、「Show Password (パスワードの表示)」をクリックする必要があります。
Business Rules サービスの「Connection Settings (接続設定)」タブのスクリーン・キャプチャー
Business Rules サービスの「Connection Settings (接続設定)」タブのスクリーン・キャプチャー

意思決定サービスをデプロイする

  1. Decision Composer のプロジェクト・ビューに戻り、「Passenger Name Record (乗客名簿)」の右側にある 3 つのドットが縦に並ぶアイコン ボタンをクリックし、表示されるメニュー項目の中から「Deploy (デプロイ)」をクリックします。 乗客名簿検査プロジェクトをデプロイするためのメニュー項目を示すスクリーン・キャプチャー
    乗客名簿検査プロジェクトをデプロイするためのメニュー項目を示すスクリーン・キャプチャー
  2. 前のステップで確認した RES の URL、ユーザー名、パスワードを入力します。入力後の画面の内容は以下のようになっているはずです (ただし、RES URL とログイン情報はユーザーごとに異なります)。 乗客名簿検査プロジェクトをデプロイするための画面のスクリーン・キャプチャー
    乗客名簿検査プロジェクトをデプロイするための画面のスクリーン・キャプチャー
  3. 「Deploy (デプロイ)」をクリックします。
  4. デプロイされたルール・セットのパスをメモします。初めてデプロイした場合、パスは/PNRCheckRuleApp/1.0/PNRCheck/1.0 となっているはずです。

Analytics Engine を使用して Hadoop のインスタンスを作成する

  1. IBM Cloud ダッシュボードに戻り、カタログを表示して「Analytics Engine」サービスを検索します。
  2. 「Analytics Engine」サービスを選択してから「Configure (構成)」をクリックします。このサービスには、Hadoop がデフォルト・コンポーネントの 1 つとして組み込まれています。「Create (作成)」をクリックします。 ソフトウェア・パッケージとして「AE 1.0 Spark」が選択されている画面のスクリーン・キャプチャー
    ソフトウェア・パッケージとして「AE 1.0 Spark」が選択されている画面のスクリーン・キャプチャー
  3. サービスが作成されたら、左側のパネルで「Service Credentials (サービス資格情報)」タブをクリックし、「New Credential (新規資格情報)」を選択してから「Add (追加)」をクリックします。
  4. 資格情報が作成された後、「View Credentials (資格情報の表示)」をクリックします。これにより、作成したアナリティクス・クラスターに固有の資格情報が表示されます。
     "cluster": {
        "cluster_id": "20171107-205445-503-IAPgshwm",
        "user": "clsadmin",
        "password": "XXXXXXXXXXX",
        "service_endpoints": {
          "ambari_console": "https://chs-mfw-836-mn001.bi.services.us-south.bluemix.net:9443",
          "livy": "https://chs-mfw-836-mn001.bi.services.us-south.bluemix.net:8443/gateway/default/livy/v1/batches",
          "oozie_rest": "https://chs-mfw-836-mn001.bi.services.us-south.bluemix.net:8443/gateway/default/oozie",
          "notebook_gateway": "https://chs-mfw-836-mn001.bi.services.us-south.bluemix.net:8443/gateway/default/jkg/",
          "webhdfs": "https://chs-mfw-836-mn001.bi.services.us-south.bluemix.net:8443/gateway/default/webhdfs/v1/",
          "ssh": "ssh clsadmin@chs-mfw-836-mn003.bi.services.us-south.bluemix.net",
          :
        }
      }
  5. ユーザー、パスワード、SSH の値をメモします (上記の図中で強調表示されています)。
  6. 任意の UNIX シェルから、コマンド ssh [user]@[SSH Host] を使用して SSH 資格情報を確認します。ここで、[user] はユーザー名、[SSH Host] はクラスターのホスト名です。上記のスクリーン・キャプチャーに示されているテキストを使用した場合、コマンドは ssh clsadmin@chs-mfw-836-mn003.bi.services.us-south.bluemix.net となります。
  7. パスワードを入力するよう促されたら、パスワードを入力します。

quickstart フォルダーをインポートする

ローカル UNIX シェルから、コマンド scp *.* [user]@[SSH Host]:/home/wce/clsadmin を使用して quickstart フォルダーの中身を IBM Cloud 上のアカウントにアップロードします。

HDFS ディレクトリーを作成する

  1. IBM Cloud 上のアカウントのホーム・フォルダーがカレント・ディレクトリーになっている状態で、以下のコマンドを入力します。これにより、HDFS ディレクトリーが作成されてデータが追加されます。
    hdfs dfs -mkdir input
  2. .json ファイルを入力ディレクトリー内にコピーします。
    hdfs dfs -put pnr.json input

Hadoop ジョブを構成する

run.sh を編集し、以下のパラメーターを入力して Hadoop ジョブを構成します。このサンプル・プロジェクト 1 で変更する必要があるパラメーターは、大括弧 ([ ]) で囲まれているものだけです。

  • 入力ディレクトリー: input
  • 出力ディレクトリー: output
  • ルール・セット・バージョン: /PNRCheckRuleApp/1.0/PNRCheck/1.0
  • Rule Execution Server ホスト: [IBM Cloud Rule Execution Server のホスト名]
  • Rule Execution Server ユーザー: resAdmin
  • Rule Execution Server パスワード: [Business Rules サービスのパスワード]
  • ルール・エンジン・パスワード: "[IBM Business Rules の基本認証パスワード]"
  • Cloudモード: true
  • HTTPS:true

Rule Execution Server のホスト名、Rule Execution Server パスワード、ルール・エンジン・パスワードを確認するには、「Business Rules サービスを作成する」のセクションを参照してください。Execution Server ホストには、ホスト名だけを入力します。ポート番号や Execution Server URL の他の部分は含めないでください。Rule Engine パスワードは、引用符で囲む必要があります。

Hadoop ジョブを実行する

Hadoop ジョブを実行します。
./run.sh

Hadoop map/reduce ジョブが開始し、複数の map ジョブが作成されます。

Cloud モードで実行しているため、各 map ジョブは REST API を介して Rule Execution Server 意思決定サービスにアクセスします。このサービスはマルチスレッド化されていて、要求を並列処理することができます。

このサンプルが正常に実行されると、以下の出力から、ジョブによって 1 人の乗客が検出されたことを確認できます。
Profile Match for Fred Flanders on flight 2017-10-22T12:28:52. Passport L87343411

ジョブが失敗した場合は、入力した資格情報を確認してください。資格情報が正しいようであれば、Yarn ログを調べます。詳細については、トラブルシューティングに関するセクションを参照してください。

サンプル・プロジェクト2: 組み込みルール・エンジンを使用してプロジェクトを実行する

サンプル・プロジェクト 1 では、データ行ごとに Business Rules サービス REST API を呼び出しました。Business Rules サービスはマルチスレッド化されていて、同時に実行される複数の map ジョブを処理することができますが、Business Rules サービスを REST で呼び出すのでは、大量のバッチ処理に対処しきれません。Hadoop の力を最大限に発揮させるには、map ジョブ内にルール・エンジンを組み込む必要があります。組み込みモードでは、ルールとデータが同じジョブ内で実行されるため、Cloud モードよりもパフォーマンスが向上します。Business Rules サービスの呼び出しは、ルールと XOM を取得するための最初のフェッチを除き、一切行われません。

組み込みモード用のバッチ・ジョブを構成する

サンプル・プロジェクト 1 で行ったように、run.sh を編集して Cloud パラメーターを false に変更します。
Cloud モード: false

組み込みモードでバッチ・ジョブを実行する

Hadoop ジョブを実行します。
./run.sh

サンプル・プロジェクト 1 での場合と同じ出力が表示されます。けれども今回は、大量のデータ・セットでの実行時間が大幅に短くなっています。用意されているサンプル・データの場合は、実行時間にほとんど差はみられませんが、それは、サンプル・データでは数行のデータしか入力されないためです。

次のステップ

以上の手順で、Hadoop 上で初の Decision Composer モデルを実行しました。次は、独自のモデルの開発を目指してください。サンプルに含まれているアダプター・コードは、Decision Composer によって生成される意思決定サービスであれば、どのサービスでも機能するはずです。最初に Decision Composer サンプルをインポートして動作の仕組みを把握してから、独自のモデルの構築に取り掛かることをお勧めします。

支援が必要な場合は、著者にお問い合わせください。

Hadoop 上の ODM アプリケーションのトラブルシューティング

  • 正しい RES 資格情報を使用していることを確認します。RES パスワードは、短い形式と長い形式の 2 つがあります。長い形式 (基本認証パスワード) は、必ず引用符で囲む必要があります (例: "Basic cmVzQWRtaW46MWh2MGZ0bG0wajl5cw==")。
  • 実行スクリプト内で指定するホスト名には、RES URL の他の部分が含まれないようにします。例えば、RES URL が https://brsv2-7a461af4.ng.bluemix.net/res の場合、ホストとして brsv2-7a461af4.ng.bluemix.net を指定します。
  • 問題を確認するには、Ambari ログを使用します。それには、「Launch Console (コンソールの起動)」をクリックし、Ambari コンソールで「YARN」 > 「Resource Manager UI」にナビゲートします。map ジョブまでナビゲートして、出力を表示します。
  • Hadoop 上で意思決定サービスを実行する前に、単純なサービス呼び出しを使用するか、DVS テストを使用して、意思決定サービスをテストしてください。こうすることによって、Hadoop に移行する前に、単純なルールの問題を解決することができます。Hadoop に移行してからでは、問題の診断が難しくなります。
  • Hadoop 上でアプリケーションをテストする際は、小さなデータ・セットを使用します。
  • Windows ではなく、UNIX 上で開発します。Windows を使用すると、ファイルの非互換性の問題が発生する可能性があります。
  • ルールに含まれる print 文を使用し、その出力を Hadoop ログ内で確認します。
  • Hadoop クラスターと Business Rules ルールが同じ領域内に配置されていることを確認します。

まとめ

このチュートリアルでは、IBM Decision Composer と Hadoop を IBM Cloud 上で統合するソリューションを探りました。Decision Composer によって生成されたプロファイリング意思決定サービスを Hadoop ジョブによって実行する例として、最初のサンプル・プロジェクトでは、Business Rules サービス REST API を使用して意思決定サービスを実行しました。2 番目のサンプル・プロジェクトでは、最大限のパフォーマンスを引き出すために、組み込みモードで意思決定サービスを実行しました。

このチュートリアルを参考に、Decision Composer で独自の意思決定サービスを生成し、Hadoop を使用して実行することをお勧めします。


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


関連トピック


コメント

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing, Information Management, Cognitive computing
ArticleID=1046784
ArticleTitle=IBM Cloud 上の Decision Composer で大きく視野を広げる
publish-date=06142018