OCI GoldenGate Stream Analytics (GGSA) イメージを使ってみた
ご無沙汰しておりますが、元気です。おとなしく在宅勤務してます。家にいるとおやつの量が増えるなーと思っていたのですが、そもそも会社にいるときでも16時ぐらいになったらファミマにお菓子買いに行ってたので一緒でした。
仕事がらみで少し掲題の件調べてみたので、ほんの入りだけ blog にダンプしておこうと思います。
GoldenGate Stream Analytics とは
OCI 上でストリーム系の処理をしようと思ったとき、 Spark Streaming が使えるサービスとしては Big Data Service がありますが*1、 GoldenGate Stream Analytics の OCI マーケットプレイスイメージを使うという選択肢もあります。
詳細は以下の記事が詳しいですが、データ連携のツールとして実績のある GoldenGate と WebUI からストリーム処理を定義できる Oracle Stream Analytics が一つになったイメージです。 Stream Analytics は基盤として Spark Streaming を利用します。このほか Kafka や MySQL も含まれているので、ストリームデータの扱いを試したい、検討したいときに導入として使いやすいパッケージを提供しています。
blogs.oracle.com
とりあえずこのイメージを使ってインスタンスを立てて、雰囲気を見て見よう、というのがこの記事の趣旨です。
インスタンスの作成
このイメージの使い方は以下の URL に記載があり、
Oracle Database Using Oracle Stream Analytics on Cloud Marketplace
以下 URL からイメージのプロビジョニングが可能です。
Oracle GoldenGate Stream Analytics - Oracle - Oracle Cloud Marketplace
マーケットプレイスから「アプリケーションの入手」をクリックして進みます。ライセンスは30日間トライアル利用可能です。
利用するリージョンを選択しサインインします。 OCI のアカウントがない場合は右側のメニューからトライアルアカウントを取得してください。
OCI サインイン画面が表示されるので、サインインします。
GoldenGate Steam Analytics イメージをプロビジョニングする画面が表示されるので、プロビジョニングするコンパートメントを選びます。
コンパートメントを選んだら、規約に同意して、スタックを起動をクリックします。
OCI Resource Manager のスタック作成画面が開きます。コンパートメントを確認し次へをクリックします。
スタックの変数になっている、ネットワーク構成を設定します。既存の VCN も選べるようですが、新しい VCN を作ります。後で楽なので、 Public IP をアサインしてしまっておきます。
AD、シェイプなどを設定します。ここで、このイメージにおいて利用できる最小のシェイプが VM.Standard2.4 なので、トライアルアカウント等で実施する際には、あらかじめ Service Limit の拡張を申請しておく必要があります。*2私がトライアルアカウントでやった際には翌日には承認されていました。 あとはインスタンスへアクセスする際の SSH キーも登録しておきます(コピペが必要です)。すべて入力、設定したら次へです。
スタックの確認をして、作成します。
Resource Manager のジョブが実行されます。
しばらくすると Resource Manager のジョブが完了し、インスタンスが使えるようになります。
インスタンス画面に遷移すると、IP アドレスが確認可能です。
ログイン画面へのアクセス、パスワードの変更
Public IP をアサインしていれば、Web ブラウザから https://<Public IP>/osa で WebUI にアクセス可能です。
スタックの中で、ポート443等へのアクセスを許可する Security List が構成されているのですが、デフォルトだとインターネットに広くアクセス許可している状態になっているため、環境に応じて IP アドレスを制限しておいたほうが無難かと思います。
ユーザ名は osaadmin / パスワードはインスタンスに SSH でログインして、カレントディレクトリにある README.txt にデフォルトの記載があるので、それを使ってログインします。
また、 README.txt 内に Spark の管理コンソールのユーザ名 sparkadmin とパスワードの記載があります。 https://<Public IP>/spark でアクセス可能です。
インスタンスに SSH アクセスすると、以下コマンドでサービスが確認できるので、ログイン等がうまく行かない場合は正しくサービスがあがっているか確認するとよさそうです。
[opc@ggsa ~]$ ggsa-services u02-kafka.mount loaded active mounted /u02/kafka ggbd-mgr.service loaded active running GoldenGate Big Data Manager kafka-zookeeper.service loaded active running Apache Zookeeper Server (Kafka) kafka.service loaded active running Apache Kafka Server (Broker) mysqld.service loaded active running MySQL Server nginx.service loaded active running The nginx HTTP and reverse proxy server osa.service loaded active running Oracle Stream Analytics spark.service loaded active running Apache Spark Master and Slave Servers
私が実施したときは、サービス自体は上がっていたのですが、WebUI のログイン画面でユーザ名・パスワード入力後Sing-Inしても正しく画面遷移しなかったため、以下コマンドで OSA のサービスを再起動したら、ログインできるようになりました。
[opc@ggsa ~]$ sudo systemctl restart osa
ログイン後のトップページはこんな感じです。
README.txt のデフォルトパスワードを、右上のメニューから変更しておきます。
Environment および User Management からそれぞれ Spark 、 osaadmin のパスワードが変更可能です。
詳細はドキュメントの以下箇所にも記載があります。組み込まれている MySQL のパスワードもデフォルトから変更しておいたほうがよさそうです。
https://docs.oracle.com/en/middleware/fusion-middleware/osa/19.1/osamp/getting-started-goldengate-stream-analytics-oci.html#GUID-B6DFE35B-2619-4E09-BF11-0139BBBDA157
雰囲気を見てみる
それでは、 GGSA でできること、雰囲気を見てみます。ドキュメントの以下のセクションにも記載があります。
Working with a GGSA Instance
Catalog ページでは、構成したリソースが表示されます。実際にリソースを追加したあとの方がわかりやすいので後で再度確認します。
Patterns ページでは、あらかじめ構成済みのデータパイプラインのパターンを利用できます。 Spatial などの文字からもわかるように空間的な処理等も行うことができます。
データパイプラインを構成してみてみるため、 Home に戻りサンプルのパイプラインをインポートしてみます。ドキュメントでは Distributed Intelligence for IoT をインポートしていますが、別のものをインポートしたほうが面白いので Transportation and Logistics をインポートしてみます。 Import は各ペインの Import をクリックするだけです。
Import すると、リソースが Catalog ページに読み込まれます。
2ページめにある、 AssetTrackingAndDriverBehavior Pipeline をクリックすると Publish するメニューが表示されるのでクリックします。 Publish することで、このパイプラインが実行され、データソースからデータを取り込み、ストリーム処理を行うことができます。
Publish 時の設定を行うことができます。実際にデータ処理するときはこのあたりカスタマイズするかと思いますが、試しに見て見るだけなので、そのまま Publishします。
Publish すると Dashboard からデータの状況を確認できるようになります。このサンプルには DriverViolationsDashboard (運転手の交通違反ですかね) が構成されているので確認してみます。
ダッシュボードを開くと、アトランタ周辺の地図が表示され、交通違反(速度違反のようです)の状況が地図やグラフで確認できます。
また、 Catalog から先程 Publish したパイプラインをクリックするとパイプラインの詳細が確認できます。データのソースやパイプラインにおける各処理が確認でき、ここで見るように1分の平均速度が20より大、30以下であれば Minor な違反として定義されているようです。このサンプルを色々見ていくと GGSA でできそうなことがいろいろと確認できそうです。
Publish するとサンプルデータが実際に処理されるので Spark Streaming の稼働状況もこのように確認することができます。
Catalog からはカスタムのリソース/Item を作成することも可能です。Create New Item のドロップダウンを開いてみると、 Dashboard や Pipeline のほか Connection や Custom JAR など Pipeline を構成する項目が作れることがわかります。
ためしに Connection を作成してみます。Connection Type から GoldenGate や Generic Database (DB への JDBC 接続) 、Kafka 等の Connection 先が選べます。
たとえば接続先として Oracle Database を選ぶと、サービス名や SID など接続に必要な情報を入力することで Connection が構成できることが確認できます。ここで作った Connection は Pipeline で利用する事が可能になります。
まとめ
本記事では GGSA のインスタンスを構成し、雰囲気を見てみました。インスタンスの作成自体は Resource Manager で自動化されているので非常にかんたんで、GGSA 自体も WebUI でやりたい処理を定義していくだけなので、とっつきやすさがあります。ストリーム処理系を試してみたい、が、どういう処理をしていくか固まっていないときに、可視化も含めて試してみるといった用途には良さそうです。また、基盤は Spark Streaming で、かつ定義できる処理のパターンもそれなりにあるので、構成・配置を検討すれば、プログラミング不要である程度複雑・負荷の高いストリーム基盤も構成できるのでは、という期待感もあります。機会があれば、他の OCI サービスと組み合わせた構成パターン等も検討してみたいと思います。
*1:Big Data Service についてはこのへんOracle Big Data Jam Session #1 - オラクルのビッグデータ系サーバレス・サービスのポートフォリオ
*2:このあたり参照 OCIコンソールにアクセスして基本を理解する - Oracle Cloud Infrastru... | Oracle Community