8.6 Oracle GoldenGate for Distributed Applications and AnalyticsによるOCIオブジェクト・ストレージへのリアルタイムParquet取込み
概要
このクイックスタートでは、GoldenGate for Distributed Applications and Analytics (GG for DAA)を使用してリアルタイムでOCIオブジェクト・ストレージ・バケットにparquetファイルを取り込む方法を手順を追って説明します。
OCIオブジェクト・ストレージは、Oracle Cloud Infrastructure(OCI)によって提供されている、スケーラブルで高パフォーマンスのストレージ・サービスです。これを使用すると、大量の非構造化データ(イメージ、ビデオ、ログ・ファイル、バックアップ、その他のタイプのファイルなど)を格納し管理できます。
GG for DAAのOCIオブジェクト・ストレージ・ハンドラは、ファイル・ライター・ハンドラおよびParquetハンドラ(parquetが必要な場合)と連携して機能します。ファイル・ライター・ハンドラによってファイルがローカルに生成され、オプションでParquetハンドラによりparquet形式に変換され、OCIオブジェクト・ストレージ・ハンドラによりOCIオブジェクト・ストレージ・バケットにロードされます。
- 前提条件
- 依存性ファイルのインストール
- Oracle Cloud Infrastructureの資格証明の構成
- Oracle GoldenGate for Distributed Applications and AnalyticsでのReplicatの作成
親トピック: クイックスタート
8.6.1 前提条件
このクイックスタートを正常に完了するには、次のものが必要です:
- OCIオブジェクト・ストレージへのアクセス
GG_HOME/opt/AdapterExamples/trail/
にあります。
8.6.2 依存性ファイルのインストール
Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)では、レプリケーション・プロセスでクライアント・ライブラリが使用されるため、これらのライブラリを、レプリケーション・プロセスを設定する前にダウンロードする必要があります。依存性ダウンローダを使用してこれらのクライアント・ライブラリをダウンロードできます。依存性ダウンローダは、Mavenやその他のリポジトリから依存性jarファイルをダウンロードするシェル・スクリプトのセットです。
GG for DAAでは、3ステップのプロセスを使用して、OCIオブジェクト・ストレージ・バケットにparquetを取り込みます:
- 証跡ファイルからローカル・ファイルを生成します
- ローカル・ファイルをParquet形式に変換します
- OCIオブジェクト・ストレージ・バケットにファイルをロードします
GG for DAAを使用してローカルparquetファイルを生成する場合は、Replicatで、ファイル・ライター・ハンドラとParquetハンドラが使用されます。GG for DAAでは、OCIオブジェクト・ストレージにparquetファイルをロードするために、OCIイベント・ハンドラが、ファイル・ライターおよびParquetイベント・ハンドラとともに使用されます。
GG for DAAでは、3つの異なるクライアント・ライブラリ・セットを使用してparquetファイルが作成され、OCIオブジェクト・ストレージにロードされます:- GG for DAA VMで、依存性ダウンローダ・ユーティリティに移動します。それは
GG_HOME/opt/DependencyDownloader/
にあります。 - 必要なバージョンを指定して
parquet.sh
、hadoop.sh
およびoracle_oci.sh
を実行します。図8-35 必要なバージョンを指定したparquet.sh、hadoop.shおよびoracle_oci.shの実行
- 3つのディレクトリが
GG_HOME/opt/DependencyDownloader/dependencies
に作成されます。これらのディレクトリを書き留めます。たとえば:/u01/app/ogg/opt/DependencyDownloader/dependencies/oracle_oci_3.2.0/*
/u01/app/ogg/opt/DependencyDownloader/dependencies/hadoop_3.4.0/*
/u01/app/ogg/opt/DependencyDownloader/dependencies/parquet_1.12.3/*
8.6.3 Oracle Cloud Infrastructureの資格証明の構成
OCIへの認証のために構成ファイルを作成する必要があります。理想的な構成ファイルには、user
、fingerprint
、key_file
、tenancy
およびregion
とそれぞれの値が含まれています。デフォルトの構成ファイルの名前と場所は、~/.oci/config
です。詳細は、必要なキーおよびOCIDのドキュメントを参照してください。
サンプル構成ファイル
[DEFAULT] user=<your_user_ocid> fingerprint=<your_fingerprint> key_file=~/.oci/oci_api_key.pem #path-to_your_key_file tenancy=<your_tenancy_ocid>
8.6.4 Oracle GoldenGate for Distributed Applications and AnalyticsでのReplicatの作成
Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)でReplicatを作成するには:
- GG for DAA UIの「管理サービス」タブで、「+」記号をクリックしてReplicatを追加します。
図8-36 「管理サービス」タブをクリック
- 「クラシックReplicat」のReplicatのタイプを選択し、「次へ」をクリックします。クラシックと調整済という2つの異なるReplicatタイプがあります。クラシックReplicatは単一のスレッド・プロセスですが、調整済Replicatは、トランザクションをパラレルに適用するマルチスレッド・プロセスです。
図8-37 Replicatの追加
- Replicat情報を入力し、「次」をクリックします:
- Replicatトレイル: 必要な証跡ファイルの名前。サンプル証跡の場合は、
tr
を指定します。 - サブディレクトリ: サンプル証跡を使用する場合は、
GG_HOME/opt/AdapterExamples/trail/
と入力します。 - ターゲット: OCIオブジェクト・ストレージ
図8-38 Replicatオプション
- Replicatトレイル: 必要な証跡ファイルの名前。サンプル証跡の場合は、
- 「管理対象オプション」はそのままにして、「次」をクリックします。
図8-39 管理対象オプション
- 「パラメータ・ファイル」の詳細を入力し、「次へ」をクリックします。「パラメータ・ファイル」では、ソースからターゲットへのマッピングを指定するか、ワイルドカード選択でそのままにしておくことができます。「Replicatタイプ」として「調整済Replicat」を選択した場合は、さらに次のパラメータを指定する必要があります:
TARGETDB LIBFILE libggjava.so SET property=<ggbd-deployment_home>/etc/conf/ogg/your_replicat_name.properties
図8-40 パラメータ・ファイル
- 「プロパティ・ファイル」で、Replicat名でマークされている最初の行を除き(
# Properties file for Replicat <replicat_name>
)、事前構成済のすべてのプロパティを削除します。次のプロパティ・リストをプロパティ・ファイルにコピー・アンド・ペーストし、#TODO
とマークされているプロパティを更新し、「作成および実行」をクリックします。#The File Writer Handler – no need to change gg.handlerlist=filewriter gg.handler.filewriter.type=filewriter gg.handler.filewriter.mode=op gg.handler.filewriter.pathMappingTemplate=./dirout gg.handler.filewriter.stateFileDirectory=./dirsta gg.handler.filewriter.fileRollInterval=7m gg.handler.filewriter.inactivityRollInterval=5s gg.handler.filewriter.fileWriteActiveSuffix=.tmp gg.handler.filewriter.finalizeAction=delete ### Avro OCF – no need to change gg.handler.filewriter.format=avro_row_ocf gg.handler.filewriter.fileNameMappingTemplate=${groupName}_${fullyQualifiedTableName}_${currentTimestamp}.avro gg.handler.filewriter.format.pkUpdateHandling=delete-insert gg.handler.filewriter.format.metaColumnsTemplate=${optype},${position} gg.handler.filewriter.format.iso8601Format=false gg.handler.filewriter.partitionByTable=true gg.handler.filewriter.rollOnShutdown=true #The Parquet Event Handler – no need to change gg.handler.filewriter.eventHandler=parquet gg.eventhandler.parquet.type=parquet gg.eventhandler.parquet.pathMappingTemplate=./dirparquet gg.eventhandler.parquet.fileNameMappingTemplate=${groupName}_${fullyQualifiedTableName}_${currentTimestamp}.parquet gg.eventhandler.parquet.writeToHDFS=false gg.eventhandler.parquet.finalizeAction=delete #TODO Select OCI Event Handler – no need to change gg.eventhandler.parquet.eventHandler=oci #TODO Set OCI Event Handler - please update as needed gg.eventhandler.oci.type=oci gg.eventhandler.oci.region=<your_bucket_region> gg.eventhandler.oci.compartmentID=<your_compartment_ocid> gg.eventhandler.oci.bucketMappingTemplate=<your_bucket_name> gg.eventhandler.oci.pathMappingTemplate=${schemaName} gg.eventhandler.oci.fileNameMappingTemplate=${tableName}_${currentTimestamp}.parquet gg.eventhandler.oci.finalizeAction=NONE gg.eventhandler.oci.configFilePath=path_to_oci_config_file_from_step2 #TODO: Edit to include the OCI Java SDK. #TODO Set the classpath to the paths you noted in step1 gg.classpath=path_to/ gcs_12.29.1/: path_to /hadoop_3.4.0/:path_to/parquet_1.12.3/* jvm.bootoptions=-Xmx512m -Xms32m
- Replicatが正常に起動されると、それが実行状態になります。「Replicat」/「統計」に移動してレプリケーション統計を確認できます。
図8-41 レプリケーション統計
- OCIコンソールに移動してバケットを確認します。
図8-42 OCIコンソール
ノート:
- ターゲットのOCIオブジェクト・ストレージ・バケットが存在しない場合は、GG for DAAによってそれが自動作成されます。テンプレート・キーワードを使用してコンテナ名を動的に割り当てることができます。
- OCIオブジェクト・ストレージ・イベント・ハンドラをプロキシ・サーバー用に構成できます。詳細は、OCIオブジェクト・ストレージ・イベント・ハンドラを参照してください。
- 様々なプロパティを使用して、ファイル書込みの動作を制御できます。ファイル・サイズ、非アクティブ期間などを設定できます。詳細は、ファイル・ライターのブログ投稿を参照してください。