8.4 Oracle GoldenGate for Distributed Applications and AnalyticsによるAWS S3バケットへのリアルタイムParquet取込み
概要
このクイックスタートでは、Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)を使用してリアルタイムでAWS S3バケットにparquetファイルを取り込む方法を手順を追って説明します。
Amazon Simple Storage Service (Amazon S3)は、Amazon Web Servicesによって提供されているオブジェクト・ストレージ・サービスです。
GG for DAAのS3ハンドラは、ファイル・ライター・ハンドラおよびParquetハンドラ(parquetが必要な場合)と連携して機能します。ファイル・ライター・ハンドラによってファイルがローカルに生成され、オプションでParquetハンドラによりparquet形式に変換され、S3ハンドラによりS3バケットにロードされます。
親トピック: クイックスタート
8.4.1 前提条件
このクイックスタートを正常に完了するには、次のものが必要です:
- Amazon S3バケット
- Amazon S3のアクセス・キーおよびシークレット
このクイックスタートでは、GG for DAAに付属のサンプル証跡ファイル(trという名前)を使用します。サンプル証跡ファイルを使用して続行する場合、それはGG for DAAインスタンスのGG_HOME/opt/AdapterExamples/trail/
にあります。
8.4.2 依存性ファイルのインストール
Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)では、レプリケーション・プロセスでクライアント・ライブラリが使用されるため、これらのライブラリを、レプリケーション・プロセスを設定する前にダウンロードする必要があります。依存性ダウンローダを使用してこれらのクライアント・ライブラリをダウンロードできます。依存性ダウンローダは、Mavenやその他のリポジトリから依存性jarファイルをダウンロードするシェル・スクリプトのセットです。
GG for DAAでは、3ステップのプロセスを使用して、s3バケットにparquetを取り込みます:
- 証跡ファイルからローカル・ファイルを生成します
- ローカル・ファイルをParquet形式に変換します
- AWS s3バケットにファイルをロードします
GG for DAAを使用してローカルparquetファイルを生成する場合は、Replicatで、ファイル・ライター・ハンドラおよびParquetイベント・ハンドラが使用されます。GG for DAAでは、AWS s3にparquetファイルをロードするために、S3イベント・ハンドラが、ファイル・ライターおよびParquetイベント・ハンドラとともに使用されます。
GG for DAAでは、3つの異なるクライアント・ライブラリ・セットを使用してparquetファイルが作成され、AWS S3にロードされます。- GG for DAA VMで、依存性ダウンローダ・ユーティリティに移動します。それは
GG_HOME/opt/DependencyDownloader/
にあります。 - 必要なバージョンを指定して
parquet.sh
、hadoop.sh
およびaws.sh
を実行します。図8-19 II.必要なバージョンを指定したparquet.sh、hadoop.shおよびaws.shの実行
- 3つのディレクトリが
GG_HOME/opt/DependencyDownloader/dependencies
に作成されます。これらのディレクトリを書き留めます。たとえば:/u01/app/ogg/opt/DependencyDownloader/dependencies/aws_sdk_1.12.309/*
/u01/app/ogg/opt/DependencyDownloader/dependencies/hadoop_3.4.0/*
- /
u01/app/ogg/opt/DependencyDownloader/dependencies/parquet_1.12.3/*
8.4.3 Oracle GoldenGate for Distributed Applications and AnalyticsでのReplicatの作成
Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)でReplicatを作成するには:
- Oracle GoldenGate for Distributed Applications and Analytics UIの「管理サービス」タブで、「+」記号をクリックしてReplicatを追加します。
図8-20 「管理サービス」タブをクリック
- 「クラシックReplicat」のReplicatのタイプを選択し、「次へ」をクリックします。クラシックと調整済という2つの異なるReplicatタイプがあります。クラシックReplicatは単一のスレッド・プロセスですが、調整済Replicatは、トランザクションをパラレルに適用するマルチスレッド・プロセスです。
図8-21 Replicatの追加
- Replicat情報を入力し、「次」をクリックします:
- Replicatトレイル: 必要な証跡ファイルの名前。サンプル証跡の場合は、
tr
と入力します。 - ターゲット: Amazon S3
図8-22 Replicatの詳細の入力
- Replicatトレイル: 必要な証跡ファイルの名前。サンプル証跡の場合は、
- 「管理対象オプション」はそのままにして、「次」をクリックします。
図8-23 「Replicatの追加」 - 「管理対象オプション」
- 「パラメータ・ファイル」の詳細を入力し、「次へ」をクリックします。「パラメータ・ファイル」では、ソースからターゲットへのマッピングを指定するか、ワイルドカード選択でそのままにしておくことができます。「Replicatタイプ」として「調整済Replicat」を選択した場合は、さらに次のパラメータを指定する必要があります:
TARGETDB LIBFILE libggjava.so SET property=<ggbd-deployment_home>/etc/conf/ogg/your_replicat_name.properties
図8-24 パラメータ・ファイル
- 「プロパティ・ファイル」で、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 S3 Event Handler – no need to change gg.eventhandler.parquet.eventHandler=s3 #TODO Set S3 Event Handler- please update as needed gg.eventhandler.s3.type=s3 gg.eventhandler.s3.region=<your-aws-region> gg.eventhandler.s3.bucketMappingTemplate=<target_s3_bucket_name> gg.eventhandler.s3.pathMappingTemplate=ogg/data/${fullyQualifiedTableName} gg.eventhandler.s3.accessKeyId=<provide_key> gg.eventhandler.s3.secretKey=<provide_secret> #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-25 レプリケーション統計
- AWS s3コンソールに移動してそれらのファイルを確認します。
図8-26 AWS S3コンソール
ノート:
- ターゲットのs3が存在しない場合は、GG for DAAによってそれが自動作成されます。テンプレート・キーワードを使用してコンテナ名を動的に割り当てることができます。
- s3ハンドラをプロキシ・サーバー用に構成できます。詳細は、S3イベント・ハンドラを参照してください。
- 様々なプロパティを使用して、ファイル書込みの動作を制御できます。ファイル・サイズ、非アクティブ期間などを設定できます。詳細は、ファイル・ライターのブログ投稿を参照してください。