きそくただしいせいかつ

日々の生活のペースセッター

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日間トライアル利用可能です。

Marketplace からインストール
Marketplace からインストール

利用するリージョンを選択しサインインします。 OCI のアカウントがない場合は右側のメニューからトライアルアカウントを取得してください。

OCI アカウントにログイン
OCI アカウントにログイン

OCI サインイン画面が表示されるので、サインインします。

OCI サインイン
OCI サインイン

GoldenGate Steam Analytics イメージをプロビジョニングする画面が表示されるので、プロビジョニングするコンパートメントを選びます。

GoldenGate Stream Analytics イメージ
GoldenGate Stream Analytics イメージ

コンパートメントを選んだら、規約に同意して、スタックを起動をクリックします。

スタックの起動
スタックの起動

OCI Resource Manager のスタック作成画面が開きます。コンパートメントを確認し次へをクリックします。

Resource Manager のスタック起動画面が開く
Resource Manager のスタック起動画面が開く

スタックの変数になっている、ネットワーク構成を設定します。既存の VCN も選べるようですが、新しい VCN を作ります。後で楽なので、 Public IP をアサインしてしまっておきます。

スタックの変数の構成
スタックの変数の構成

AD、シェイプなどを設定します。ここで、このイメージにおいて利用できる最小のシェイプが VM.Standard2.4 なので、トライアルアカウント等で実施する際には、あらかじめ Service Limit の拡張を申請しておく必要があります。*2私がトライアルアカウントでやった際には翌日には承認されていました。 あとはインスタンスへアクセスする際の SSH キーも登録しておきます(コピペが必要です)。すべて入力、設定したら次へです。

AD、シェイプなどの設定
AD、シェイプなどの設定

スタックの確認をして、作成します。

スタックの確認画面
スタックの確認画面

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 でアクセス可能です。

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 のデフォルトパスワードを、右上のメニューから変更しておきます。

System Setting を開く
System Setting を開く

Environment および User Management からそれぞれ Spark 、 osaadmin のパスワードが変更可能です。

Environment および User Management から変更可能
Environment および User Management から変更可能

詳細はドキュメントの以下箇所にも記載があります。組み込まれている 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 ページでは、構成したリソースが表示されます。実際にリソースを追加したあとの方がわかりやすいので後で再度確認します。

Catalog ページ
Catalog ページ

Patterns ページでは、あらかじめ構成済みのデータパイプラインのパターンを利用できます。 Spatial などの文字からもわかるように空間的な処理等も行うことができます。

Patterns ページ
Patterns ページ

データパイプラインを構成してみてみるため、 Home に戻りサンプルのパイプラインをインポートしてみます。ドキュメントでは Distributed Intelligence for IoT をインポートしていますが、別のものをインポートしたほうが面白いので Transportation and Logistics をインポートしてみます。 Import は各ペインの Import をクリックするだけです。

Transportation and Logistics を Import
Transportation and Logistics を Import

Import すると、リソースが Catalog ページに読み込まれます。

Catalog ページにインポートされる
Catalog ページにインポートされる

2ページめにある、 AssetTrackingAndDriverBehavior Pipeline をクリックすると Publish するメニューが表示されるのでクリックします。 Publish することで、このパイプラインが実行され、データソースからデータを取り込み、ストリーム処理を行うことができます。

Pipeline を Publish する
Pipeline を Publish する

Publish 時の設定を行うことができます。実際にデータ処理するときはこのあたりカスタマイズするかと思いますが、試しに見て見るだけなので、そのまま Publishします。

Publish 時の設定
Publish 時の設定

Publish すると Dashboard からデータの状況を確認できるようになります。このサンプルには DriverViolationsDashboard (運転手の交通違反ですかね) が構成されているので確認してみます。

Dashboard を確認
Dashboard を確認

ダッシュボードを開くと、アトランタ周辺の地図が表示され、交通違反(速度違反のようです)の状況が地図やグラフで確認できます。

Dashboard : 速度違反の状況を表示
Dashboard : 速度違反の状況を表示

また、 Catalog から先程 Publish したパイプラインをクリックするとパイプラインの詳細が確認できます。データのソースやパイプラインにおける各処理が確認でき、ここで見るように1分の平均速度が20より大、30以下であれば Minor な違反として定義されているようです。このサンプルを色々見ていくと GGSA でできそうなことがいろいろと確認できそうです。

Pipeline の設定詳細
Pipeline の設定詳細

Publish するとサンプルデータが実際に処理されるので Spark Streaming の稼働状況もこのように確認することができます。

Spark Streaming の処理状況
Spark Streaming の処理状況

Catalog からはカスタムのリソース/Item を作成することも可能です。Create New Item のドロップダウンを開いてみると、 Dashboard や Pipeline のほか Connection や Custom JAR など Pipeline を構成する項目が作れることがわかります。

Create New Item
Create New Item

ためしに Connection を作成してみます。Connection Type から GoldenGate や Generic Database (DB への JDBC 接続) 、Kafka 等の Connection 先が選べます。

Create Connection
Create Connection

たとえば接続先として Oracle Database を選ぶと、サービス名や SID など接続に必要な情報を入力することで Connection が構成できることが確認できます。ここで作った Connection は Pipeline で利用する事が可能になります。

Oracle Database への接続
Oracle Database への接続

まとめ

本記事では GGSA のインスタンスを構成し、雰囲気を見てみました。インスタンスの作成自体は Resource Manager で自動化されているので非常にかんたんで、GGSA 自体も WebUI でやりたい処理を定義していくだけなので、とっつきやすさがあります。ストリーム処理系を試してみたい、が、どういう処理をしていくか固まっていないときに、可視化も含めて試してみるといった用途には良さそうです。また、基盤は Spark Streaming で、かつ定義できる処理のパターンもそれなりにあるので、構成・配置を検討すれば、プログラミング不要である程度複雑・負荷の高いストリーム基盤も構成できるのでは、という期待感もあります。機会があれば、他の OCI サービスと組み合わせた構成パターン等も検討してみたいと思います。