9.2.12 Azure Blob Storage
トピック:
9.2.12.1 概要
Azure Blob Storage (ABS)は、Azure Cloudにオブジェクトを格納するためのサービスです。拡張性が高く、クラウドネイティブのワークロード、アーカイブ、データ・レイク、高パフォーマンス・コンピューティングおよび機械学習のためのセキュアなオブジェクト・ストレージです。Azure Blob Storage Eventハンドラを使用して、ファイル・ライター・ハンドラによって生成されたファイルをABSにロードできます。
親トピック: Azure Blob Storage
9.2.12.2 前提条件
- Azureクラウド・アカウントの設定。
- Azure Blob Storage用のJava Software Development Kit (SDK)
親トピック: Azure Blob Storage
9.2.12.3 ストレージ・アカウント、コンテナおよびオブジェクト
- ストレージ・アカウント: Azureストレージ・アカウントには、すべてのAzureストレージ・データ・オブジェクト(blob、ファイル共有、キュー、テーブル、ディスク)が含まれます。
- コンテナ: コンテナは、ファイル・システムのディレクトリと同様に、blobのセットを編成します。ストレージ・アカウントには制限のない数のコンテナを含めることができ、コンテナには制限のない数のblobを格納できます。
- オブジェクト/blobs: オブジェクトまたはblobは、ストレージ・アカウント・コンテナに格納する個々のデータです。
親トピック: Azure Blob Storage
9.2.12.4 構成
ABSイベント・ハンドラの選択を有効にするには、まずgg.eventhandler.name.type=abs
および次のABSプロパティを指定してイベント・ハンドラ・タイプを構成する必要があります。
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.name.type |
必須 | abs | なし | ファイル・ライター・ハンドラで使用するABSイベント・ハンドラを選択します。 |
gg.eventhandler.name.bucketMappingTemplate |
必須 | Azureストレージ・アカウントのコンテナ名を動的に生成するために使用される解決可能なキーワードおよび定数を含む文字列。 | なし | この名前を使用してコンテナが存在しない場合は、ABSイベント・ハンドラによって作成されます。https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata#container-namesを参照してください。サポートされているキーワードについては、テンプレート・キーワードを参照してください |
gg.eventhandler.name.pathMappingTemplate |
必須 | ファイルを書き込むAzureストレージ・アカウント・コンテナのパスを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 | なし | 定数とともにインタレースされるキーワードを使用して、一意のAzureストレージ・アカウント・コンテナ・パス名を実行時に動的に生成します。パス名の例: ogg/data/${groupName}/${fullyQualifiedTableName} 。サポートされているキーワードについては、テンプレート・キーワードを参照してください
|
gg.eventhandler.name.fileNameMappingTemplate |
オプション | Azure Blobオブジェクトのファイル名を動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 | なし | Azure Blobオブジェクト・ファイル名を動的に生成するために使用される、解決可能なキーワードおよび定数を使用します。設定しない場合、アップストリームのファイル名が使用されます。サポートされているキーワードについては、テンプレート・キーワードを参照してください |
gg.eventhandler.name.finalizeAction |
オプション | none | delete |
none |
ファイナライズ・アクションでAzure Blobデータ・ファイルを残すには、none を設定します。ファイナライズ・アクションでAzure Blobデータ・ファイルを削除するには、delete に設定します。
|
gg.eventhandler.name.eventHandler |
オプション | 子イベント・ハンドラを相互参照する一意の文字列識別子。 | イベント・ハンドラは構成されない。 | ファイル・ロール・イベントで呼び出されるダウンストリーム・イベント・ハンドラを設定します。 |
gg.eventhandler.name.accountName |
必須 | 文字列 | なし | Azureストレージ・アカウント名。 |
gg.eventhandler.name.accountKey |
オプション | 文字列 | なし | Azureストレージ・アカウント・キー。 |
gg.eventhandler.name.sasToken |
オプション | 文字列 | なし | 共有アクセス署名(SAS)を使用してAzureサービスに対して認証する資格を設定します。 |
gg.eventhandler.name.tenantId |
オプション | 文字列 | なし | アプリケーションのAzureテナントIDを設定します。 |
gg.eventhandler.name.clientId |
オプション | 文字列 | なし | アプリケーションのAzureクライアントIDを設定します。 |
gg.eventhandler.name.clientSecret |
オプション | 文字列 | なし | 認証のAzureクライアント・シークレットを設定します。 |
gg.eventhandler.name.accessTier |
オプション | Hot | Cool | Archive |
なし | Azure blob/オブジェクトの層を設定します。Azureストレージには様々なアクセス層があり、最もコスト効率に優れた方法でblobオブジェクト・データを格納できます。使用可能なアクセス層には、ホット、クールおよびアーカイブが含まれます。詳細は、https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-storage-tiersを参照してください。 |
gg.eventhandler.name.endpoint |
オプション | 文字列 |
https://<accountName>.blob.core.windows.net |
Azure Storageサービス・エンドポイントを設定します。Azure Government Cloud構成を参照 |
9.2.12.4.1 クラスパス構成
ABSイベント・ハンドラは、Azure Blob Storage用のJava SDKを使用します。
ノート:
クラスパスにAzure Blob Storage Java SDKへのパスが含まれていることを確認します。親トピック: 構成
9.2.12.4.2 依存性
<dependencies> <dependency> <groupId>com.azure</groupId> <artifactId>azure-storage-blob</artifactId> <version>12.13.0</version> </dependency> <dependency> <groupId>com.azure</groupId> <artifactId>azure-identity</artifactId> <version>1.3.3</version> </dependency> </dependencies>
親トピック: 構成
9.2.12.4.3 認証
accountKey
sasToken
tenandId
、clientID
およびclientSecret
accounkKey
の優先度が最も高く、その後にsasToken
が続きます。accountKey
およびsasToken
が設定されていない場合は、タプルtenantId
、clientId
およびclientSecret
が使用されます。
9.2.12.4.3.1 AzureテナントID、クライアントIDおよびクライアント・シークレット
- Microsoft Azureポータルに移動します。
- 左側のリストから「Azure Active Directory」を選択し、「Azure Active Directory」パネルを表示します。
- 「Azure Active Directory」パネルで「プロパティ」を選択し、Azure Active Directoryのプロパティを表示します。
- Microsoft Azureポータルに移動します。
- 左側のリストから「すべてのサービス」を選択し、Azureサービスのリストを表示します。
- フィルタ・コマンド・ボックスに「アプリ」と入力し、リストされたサービスから「アプリの登録」を選択します。
- 作成した「アプリの登録」を選択して、Azure Storageにアクセスします。
親トピック: 認証
9.2.12.4.4 プロキシ構成
プロキシ・サーバーの背後でプロセスを実行する場合、jvm.bootoptions
プロパティを使用して、既知のJavaプロキシ・プロパティを使用してプロキシ・サーバー構成を設定できます。
たとえば:
jvm.bootoptions=-Dhttps.proxyHost=some-proxy-address.com -Dhttps.proxyPort=80
-Djava.net.useSystemProxies=true
親トピック: 構成
9.2.12.4.5 サンプル構成
#The ABS Event Handler gg.eventhandler.abs.type=abs gg.eventhandler.abs.pathMappingTemplate=${fullyQualifiedTableName} #TODO: Edit the Azure Blob Storage container name gg.eventhandler.abs.bucketMappingTemplate=<abs-container-name> gg.eventhandler.abs.finalizeAction=none #TODO: Edit the Azure storage account name. gg.eventhandler.abs.accountName=<storage-account-name> #TODO: Edit the Azure storage account key. #gg.eventhandler.abs.accountKey=<storage-account-key> #TODO: Edit the Azure shared access signature(SAS) to authenticate to an Azure Service. #gg.eventhandler.abs.sasToken=<sas-token> #TODO: Edit the the tenant ID of the application. gg.eventhandler.abs.tenantId=<azure-tenant-id> #TODO: Edit the the client ID of the application. gg.eventhandler.abs.clientId=<azure-client-id> #TODO: Edit the the client secret for the authentication. gg.eventhandler.abs.clientSecret=<azure-client-secret> gg.classpath=/path/to/abs-deps/* #TODO: Edit the proxy configuration. #jvm.bootoptions=-Dhttps.proxyHost=some-proxy-address.com -Dhttps.proxyPort=80 -Djava.net.useSystemProxies=true
親トピック: 構成
9.2.12.4.6 Azure Government Cloud構成
Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)でAzure Government Cloudに存在するストレージ・アカウントにデータを複製する必要がある場合は、さらに構成が必要です。
AZURE_AUTHORITY_HOST
およびgg.eventhandler.{name}.endpoint
を設定します。
Government Cloud | AZURE_AUTHORITY_HOST | gg.eventhandler.{name}.endpoint |
---|---|---|
Azure US Government Cloud |
|
|
Azure German Cloud |
|
https://<storage-account-name>.blob.core.cloudapi.de |
Azure China Cloud |
https://login.chinacloudapi.cn |
https://<storage-account-name>.blob.core.chinacloudapi.cn |
環境変数は、Oracle GoldenGateのsetenv
パラメータを使用してreplicat prmファイルに設定できます。
例:
setenv (AZURE_AUTHORITY_HOST = "https://login.microsoftonline.us")
親トピック: 構成
9.2.12.5 トラブルシューティングと診断
エラー:機密クライアントはクロス・クラウド・リクエストでサポートされていません。
これは、ターゲットのAzureストレージ・アカウントがAzure Government Cloudの1つに存在することを示しています。Azure Government Cloud構成に従って必要な構成を設定します。Replicatリカバリ後の重複レコード
ADLSレプリケーションでは、Replicatでファイル・ライター・ハンドラとADLSハンドラが使用されます。Oracle GoldenGateでは、データ損失がないことが優先されており、ADLS (json
、csv
、delimtedtext
、avro_orc
、parquet
)配信において、1回以上のセマンティクスによって、障害発生時にデータ損失がないことが保証されます。Replicatが正常に実行され、正常に停止された場合に、1回のみがサポートされています。障害(ネットワーク障害が原因)が発生した場合は、リカバリにおいて、様々な理由で、重複が発生する可能性があります。
重複が発生する可能性がある2つのケース
- データが書き込まれ、そのデータの書込みからチェックポイントの移動までの間に障害が発生した場合。その後、Replicatを再起動すると、前のチェックポイントまでバックアップされて、残念ながらデータが繰り返される可能性があります。
- データファイルのローリングは、お客様が構成したトリガーに基づいて実行されます。トリガーは、ファイル・サイズ、時間、非アクティブまたは時刻です。ローリングは、必ずしもトランザクション・コミット境界で起こるとはかぎりません。トリガーにより、現在のファイルへの書込みが完了し、後処理の変換および移動が完了し、そのファイルに関する状態が削除されます。ローリングが処理されてからチェックポイントが移動されるまでの間にReplicatの異常終了が発生した場合は、再起動時に、これらのメッセージが再び繰り返される可能性があります。
ADLSのReplicatリカバリによって重複レコードが発生した場合、それは、想定されている動作です。Replicatが正常に実行されている間に重複が発生した場合は、サポート・チケットをご利用ください。
親トピック: Azure Blob Storage