OCIへのオープンソースのデータ・レイクハウスの展開

データ・レイクハウスは、すべてのデータの格納、理解および分析を可能にする最新のオープン・アーキテクチャです。データ・レイクとデータ・ウェアハウスの能力を組み合せて、高度なアナリティクスとビジネス・インサイトを得るための広範なエンタープライズ・データを処理します。データ・レイクハウスは、データ・サイロをなくすアーキテクチャを提供し、データ・エステート全体のデータを分析できるようにします。データ・レイクハウスは、Oracle Cloud Infrastructure (OCI)上にゼロから構築できます。

アーキテクチャ

このアーキテクチャでは、プラットフォーム・トポロジ、コンポーネントの概要、推奨されるベスト・プラクティス、およびTerraformの自動化が導入され、OCIにオープンソースのデータ・レイクハウスがデプロイされます。

データ・レイクハウスは、エンタープライズ・アプリケーション・データを格納および集約できます。データは、データ・レイクまたはデータ・ウェアハウスに送信できます。データ・レイクに存在するデータは、処理してデータ・ウェアハウスにロードすることも、データ・レイクから直接読み取って高度な分析を実行することもできます。

次の図は、このリファレンス・アーキテクチャを示しています。

open- source- data- lakehouse.pngの説明が続きます
図open- source- data- lakehouse.pngの説明

open- source- data- lakehouse- oracle.zip

OCI上のこのデータ・レイクハウス・アーキテクチャでは、Oracle MySQL HeatWaveがデータ・ウェアハウスに使用されます。Oracle MySQL HeatWaveは、組込みの高パフォーマンスのインメモリー・クエリー・アクセラレータを備えた唯一のMySQLクラウド・サービスです。データベース管理者およびアプリケーション開発者は、MySQLデータベースからOLTPおよびOLAPワークロードを直接実行できるようにする唯一のサービスです。MySQLはOLTP用に最適化されているため、多くのMySQL実装では、ビジネス分析用に個別のOLAPデータベースが使用されます。

Oracle MySQL HeatWaveは、既存のアプリケーションを変更せずに、分析および混合ワークロードの大きさの順でMySQLのパフォーマンスを向上させます。Oracle MySQL HeatWaveは、トランザクションおよびアナリティクスのワークロードに対応する単一の統合プラットフォームを提供します。これにより、複雑で時間がかかる高価なETLが不要になり、個別のアナリティクス・データベースと統合する必要がなくなります。Oracle MySQL HeatWaveのMySQL Autopilotは、プロビジョニング、データ・ロード、問合せ実行および障害処理を自動化し、開発者とDBAが大幅に時間を節約します。

Oracle Cloud Infrastructure Object Storageはこのアーキテクチャでデータ・レイクとして機能します。OCI Object Storageを使用すると、企業は、コスト効率に優れた柔軟な環境ですべてのデータを格納し、必要な処理、永続性および分析サービスを提供し、新しいビジネス・インサイトを得ることができます。OCI Object Storageのデータ・レイクにより、構造化データおよび非構造化データの格納およびキュレーションを行い、複数のソースから大量の多様なデータを編成するための方法を使用できます。

提示されたアーキテクチャーには、次のオープンソースコンポーネントが含まれています。

  • Apache Zeppelin

    Apache Zeppelinは、データ主導型の対話型データ分析およびSQL、Scala、Python、Rなどのコラボレーション・ドキュメントを可能にするWebベースのノートブックです。

    Zeppelinは、このアーキテクチャにおけるデータ・サイエンスおよびデータ探索に使用されます。Zeppelinでは、ノートブックを作成し、Zeppelinインタプリタの概念を活用できます。これにより、任意の言語またはバックエンドのデータ処理システムをプラグインできます。ZeppelinからMySQLおよびObject Storageへの接続が確立されているため、データ・レイクハウスの実際の問合せ経験において、共同問合せを実行し、データ・ウェアハウスおよびデータ・レイクからデータを同時に取得できます。

  • Grafana

    Grafanaはこのアーキテクチャのオープンソース・プラットフォームです。Grafanaは、TypeScript(フロントエンド)とGo(バックエンド)で記述された一般的なWebアプリケーションです。サポートされているデータ・ソースのチャートとグラフ(そのうちの1つがMySQL)を提供します。Grafanaを拡張できるように、オンラインで多数のプラグインを利用できます。

ZeppelinおよびGrafanaは、プライベート・サブネットに配置された2つの仮想マシン・インスタンスによって共有されるネットワーク・ファイル・システム(NFS)を利用します。これらのインスタンスは、可用性ドメイン内の2つの異なるフォルト・ドメインに存在します。ファイル・システムは、ネットワーク・セキュリティ・グループ(NSG)を搭載した専用プライベート・サブネットに存在し、すべてのインスタンスからマウント・ターゲットにアクセスできます。ユーザーは、この可用性の高い設計の一部であるOCI Load Balancerを介してZeppelinおよびGrafanaにアクセスできます。

このアーキテクチャでは、Oracle Cloud Infrastructureデータ統合を使用して、Object StorageからMySQLにファイルをロードします。『MySQL、 Data Integration and Data Science for Marine Life Workshop』では、Object Storageをソースとして、MySQLを宛先として使用してデータ・フローを設定および実行する方法について説明します。

アーキテクチャには、次のOCIコンポーネントがあります。

  • テナント

    テナンシは、Oracle Cloud Infrastructureのサインアップ時にOracleがOracle Cloud内で設定するセキュアで分離されたパーティションです。テナンシ内のOracle Cloudでリソースを作成、編成および管理できます。テナンシは、会社または組織と同義です。通常、会社は1つのテナンシを持ち、そのテナンシ内の組織構造を反映します。通常、単一のテナンシは単一のサブスクリプションに関連付けられ、1つのサブスクリプションには通常1つのテナンシのみが含まれます。

  • コンパートメント

    コンパートメントは、Oracle Cloud Infrastructureテナンシ内のリージョン間論理パーティションです。コンパートメントを使用して、Oracle Cloudでリソースを編成し、リソースへのアクセスを制御して、使用割当て制限を設定します。特定のコンパートメント内のリソースへのアクセスを制御するには、誰がリソースにアクセスできるか、どのアクションを実行できるかを指定するポリシーを定義します。

  • ポリシー

    Oracle Cloud Infrastructure Identity and Access Managementポリシーは、誰がどのリソースにアクセスできるか、および方法を指定します。アクセス権はグループ・レベルおよびコンパートメント・レベルで付与されるため、特定のコンパートメント内またはテナンシ内の特定のアクセスのタイプをグループに付与するポリシーを作成できます。

  • リージョン

    Oracle Cloud Infrastructureリージョンは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含む、ローカライズされた地理的な領域です。リージョンは他のリージョンから独立しており、巨大な距離は(国全体または大陸にわたって)分離できます。

  • 仮想クラウド・ネットワーク(VCN)とサブネット

    VCNは、Oracle Cloud Infrastructureリージョンで設定する、カスタマイズ可能なソフトウェア定義のネットワークです。従来のデータ・センター・ネットワークと同様に、CNはネットワーク環境を完全に制御できます。VCNには、VCNの作成後に変更できる複数の重複しないCIDRブロックを含めることができます。VCNをサブネットにセグメント化できます。これは、リージョンまたは可用性ドメインにスコープを設定できます。各サブネットは、VCN内の他のサブネットと重複しない連続した範囲のアドレスで構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックでもプライベートでもかまいません。

  • 可用性ドメイン

    可用性ドメインは、リージョン内の独立したスタンドアロン・データ・センターです。各アベイラビリティ・ドメインの物理リソースは、フォルト・トレランスを提供する他のアベイラビリティ・ドメインのリソースから分離されます。アベイラビリティ・ドメインは、電源や冷却、内部の可用性ドメイン・ネットワークなどのインフラを共有しません。そのため、1つの可用性ドメインでの障害が、リージョン内の他の可用性ドメインに影響しない可能性があります。

  • フォルト・ドメイン

    フォルト・ドメインは、可用性ドメイン内のハードウェアおよびインフラストラクチャのグループです。各アベイラビリティ・ドメインに3つのフォルト・ドメインがあり、電源とハードウェアが独立しています。複数のフォルト・ドメインにリソースを分散すると、アプリケーションは、フォルト・ドメイン内の物理サーバーの障害、システム・メンテナンスおよび電源障害を許容できます。

  • オブジェクト・ストレージ

    OCI Object Storageは、信頼性とコスト効率の高いデータ耐久性を実現するインターネット規模の高パフォーマンス・ストレージ・プラットフォームです。Object Storageでは、分析データを含む、あらゆるコンテンツ・タイプの非構造化データを無制限に格納できます。インターネットやクラウド・プラットフォーム内からデータを直接格納または取得することは安全で安全です。複数の管理インタフェースにより、パフォーマンスやサービスの信頼性が低下することなく、簡単に小規模から始めてシームレスに拡張できます。

    頻繁に使用されないデータを格納し、Apache Zeppelinの最新データとシームレスに結合することにより、データ・ウェアハウスのコールド・ストレージ・レイヤーとしてObject Storageを使用します。アーカイブ・ストレージは、長期間保持する必要があるファイルやアクセスがほとんどないファイルに使用します。

  • MySQL HeatWave

    Oracle MySQL Database Serviceは、完全に管理されたデータベース・サービスであり、開発者は世界で最も人気のあるオープン・ソース・データベースを使用して、セキュアなクラウドネイティブ・アプリケーションを迅速に開発およびデプロイできます。Oracle MySQL HeatWaveは、Oracle MySQL Database Serviceの統合された高パフォーマンスのインメモリー問合せアクセラレータで、アナリティクスおよびトランザクション問合せに対するMySQLのパフォーマンスを促進します。

  • データ統合

    Oracle Cloud Infrastructure Data Integrationは、様々なデータ・ソースからターゲットOracle Cloud Infrastructureサービスにデータを抽出、ロード、変換、クレンジングおよび再シェイプする、完全に管理されたサーバーレスのクラウドネイティブ・サービスです。ETL(変換負荷を抽出)は、Sparkで完全管理スケールアウト処理を利用します。ユーザーは、直感的でコードレスなユーザー・インタフェースを使用してデータ統合プロセスを設計し、統合フローを最適化して最も効率的なエンジンおよびオーケストレーションを生成し、実行環境を自動的に割当ておよびスケーリングします。OCI データ統合は、対話型の探索およびデータ準備を提供し、スキーマ変更を処理するルールを定義することでデータ・エンジニアがスキーマ・ドリフトから保護するのに役立ちます。

  • ロード・バランサ

    Oracle Cloud Infrastructure Load Balancingサービスは、1つのエントリ・ポイントからバックエンド内の複数のサーバーへの自動トラフィック分散を提供します。

  • コンピュート・インスタンス

    Oracle Cloud Infrastructure Computeサービスを使用すると、クラウドでコンピュート・ホストをプロビジョニングおよび管理できます。CPU、メモリー、ネットワーク帯域幅およびストレージのリソース要件を満たすシェイプを使用してコンピュート・インスタンスを起動できます。コンピュート・インスタンスを作成したら、それをセキュアにアクセスし、再起動、ボリュームのアタッチやデタッチを行い、不要になったときにインスタンスを終了できます。

  • ファイル・ストレージ

    Oracle Cloud Infrastructure File Storageサービスでは、永続的でスケーラブルなエンタープライズ規模のネットワーク・ファイル・システムを提供します。VCN内の任意のベア・メタル、仮想マシンまたはコンテナ・インスタンスからFile Storageサービス・ファイル・システムに接続できます。Oracle Cloud Infrastructure FastConnectおよびIPSec VPNを使用して、VCNの外部からファイル・システムにアクセスすることもできます。

  • インターネット・ゲートウェイ

    インターネット・ゲートウェイを使用すると、VCN内のパブリック・サブネットとパブリック・インターネット間のトラフィックが許可されます。

  • ネットワーク・アドレス変換(NAT)ゲートウェイ

    NATゲートウェイを使用すると、VCN内のプライベート・リソースは、着信インターネット接続にそれらのリソースを公開せずに、インターネット上のホストにアクセスできます。

  • ネットワーク・セキュリティ・グループ(NSG)

    NSGは、クラウド・リソースの仮想ファイアウォールとして機能します。Oracle Cloud Infrastructureのゼロトラスト・セキュリティ・モデルでは、すべてのトラフィックが拒否され、VCN内のネットワーク・トラフィックを制御できます。NSGは、単一のVCN内の指定されたVNICのセットにのみ適用されるイングレスおよびエグレス・セキュリティ・ルールのセットで構成されます。

推奨

次の推奨事項を開始点として使用します。要件は、ここで説明するアーキテクチャとは異なる場合があります。
  • VCN

    VCNを作成する際、VCNのサブネットにアタッチする予定のリソース数に基づいて、必要なCIDRブロックの数および各ブロックのサイズを決定します。標準のプライベートIPアドレス領域内にあるCIDRブロックを使用します。

    必要に応じてVCNとオンプレミス・ネットワーク間の接続を設定できるように、オンプレミス・ネットワークまたは他のネットワークと重複しないアドレス範囲を選択します。

    サブネットを設計する際は、トラフィック・フローおよびセキュリティ要件を考慮してください。特定の層またはロール内のすべてのリソースを、セキュリティ境界として機能する同じサブネットにアタッチします。

  • セキュリティ

    ポリシーを使用して、会社が所有するOracle Cloud Infrastructure (OCI)リソースにアクセスできるユーザーとそのアクセス方法を制限します。

    セキュリティの実装を成功させるには、特定のポリシーが必要です。キー、証明書およびシークレットをさらに保護するために、Oracle Cloud Infrastructure Vaultの使用を検討してください。

    ネットワーク・サービスは、セキュリティ・リストとネットワーク・セキュリティ・グループ(NSG)というパケット・レベルでトラフィックを制御するためのセキュリティ・ルールを使用する2つの仮想ファイアウォール機能を提供します。NSGは、単一のVCN内の選択したセットのVNICのみに適用される一連のイングレスおよびエグレス・セキュリティ・ルールで構成されます。たとえば、VCNのマルチティア・アプリケーションのWeb層でWebサーバーとして機能するすべてのコンピュート・インスタンスを選択できます。

    NSGセキュリティ・ルールはセキュリティ・リスト・ルールと同じです。ただし、NSGセキュリティ・ルールのソースまたは宛先では、CIDRブロックのかわりにNSGを指定できます。そのため、セキュリティ・ルールを記述して、同じVCN内の2つのNSGまたは1つのNSG内のトラフィックを簡単に制御できます。データベース・システムを作成する場合、1つ以上のNSGを指定できます。また、既存のデータベース・システムを更新して、1つ以上のNSGを使用することもできます。

  • コンピュート

    適切なOCPUとメモリーの組合せのシェイプを選択し、各インスタンスについて、ローカルNVMeまたはブロック・ストレージ(あるいはその両方)を必要に応じてプロビジョニングします。OCPUとメモリーを組み合せる柔軟性を高める、使用可能なフレキシブル・シェイプの使用を検討してください。

注意事項

データ・レイクハウスをOracle Cloud Infrastructure (OCI)にデプロイする場合は、次の点を考慮してください。

  • データ・ソースの統合

    MySQLとのObject Storage統合の場合、Oracle Cloud Infrastructure Data Integrationを選択しました。オープンソース・ツールを使用する場合、Talendはオプションです。ダウンロードを自動化できないため、Talendはこのアーキテクチャに含まれていませんでした(Talendにサインアップする必要があります)。

  • データ・サイエンスと機械学習

    オラクルは、データ・サイエンスおよびデータ検出のためのプラットフォームとして、オープンソースのApache Zeppelinを選択しました。または、データ主導型の高度なインサイトおよびアプリケーションの主要イネーブラであるOracle Cloud Infrastructure Data Scienceを使用することもできます。このイネーブラは、データ・サイエンティストに自動化されたワークフローへのアクセス、JupyterLabノートブックと数百のオープン・ソース・ツールへのアクセス、およびモデルの構築への合理化されたアプローチを提供します。これは、チームが構造化されたモデルを共有および再現する方法と連携できるコラボレーション可能なプラットフォームであり、エンタープライズグレードの結果を得るための安全な方法です。プラットフォームは完全に管理され、最新の企業のニーズを満たします。

  • 分析およびレポート

    このアーキテクチャでは、Grafanaが分析プラットフォームとして選択されました。分析およびレポート要件を包括的に満たすことができる高度なマネージド・サービスであるOracle Analytics Cloudの使用を検討してください。

  • インスタンスの可用性と拡張性

    この例では、高可用性アーキテクチャにおいて、同じ可用性ドメイン内の異なるフォルト・ドメインに2つのインスタンスが表示されています。フォルト・トレランスをさらに高くするために、インスタンスを異なる可用性ドメイン(使用可能なリージョン)に配置することを選択できます。

    より要求の厳しい様々なパフォーマンス・ニーズへのより動的な適応を表す代替アプローチは、インスタンス・プールと自動スケーリングの使用です。

    インスタンス・プールを使用すると、同じリージョン内の同じ構成に基づいて、複数のOracle Cloud Infrastructure Computeインスタンスをプロビジョニングおよび作成できます。

    自動スケーリングでは、CPU使用率など、インスタンス・プール内のコンピュート・インスタンス数を自動調整できます。自動スケーリングは、需要が多い期間に一貫したパフォーマンスを提供し、需要が少ない期間にコストを削減するのに役立ちます。

  • データベースの可用性と拡張性

    高可用性のために、追加のOracle MySQL DB Systemをスタンバイ・レプリカとしてデプロイすることを検討してください。レプリカを別のフォルト・ドメイン、可用性ドメインまたはリージョンに配置できます。

  • データベースのバックアップ

    Oracle MySQL Database Serviceでは、データベース・システムに含まれるすべてのデータの完全バックアップと、最後の完全バックアップ以降に追加または変更されたデータのみの増分バックアップという、2つのタイプのバックアップがサポートされています。バックアップは、次の方法で実行されます。

    • 手動: コンソールでのアクションまたはAPIによるリクエストによってバックアップが開始されます。手動バックアップは、少なくとも1日、最大365日間保持できます。
    • 自動: 自動的にスケジュールされたバックアップは、選択した時点で必要な対話なしで実行されます。自動バックアップは1から35日間保持されます。デフォルトの保存期間は7日間です。定義されている場合、自動バックアップの保存期間は編集できません。
  • ファイル・ストレージ

    この例では、Oracle Cloud Infrastructure File Storageサービスを活用しています。あるいは、マルチノード・アーキテクチャに共有ブロック・ボリュームを特徴付けることもできます。ブロック・ボリュームは、読取り/書込みとして複数のインスタンスにアタッチできます。その場合は、Oracle Cluster File Systemバージョン2 (OCFS2)などのクラスタ対応システムまたはソリューションをインストールする必要があります。

  • セキュリティ

    Oracle Cloud Guardを使用して、OCIのリソースのセキュリティをプロアクティブに監視および保守することを検討してください。Oracle Cloud Guardは、セキュリティの弱点を調べたり、オペレータとユーザーにリスクのあるアクティビティがないか監視するために定義できるディテクタ・レシピを使用します。構成の誤りや安全でないアクティビティが検出されると、Oracle Cloud Guardは、定義できるレスポンダ・レシピに基づいて、是正措置を推奨し、それらのアクションを支援します。最大限のセキュリティを必要とするリソースの場合、Oracleではセキュリティーゾーンを使用することをお勧めします。セキュリティ・ゾーンは、ベスト・プラクティスに基づくセキュリティ・ポリシーのOracle定義レシピに関連付けられたコンパートメントです。たとえば、セキュリティ・ゾーン内のリソースにパブリック・インターネットからアクセスできず、顧客管理キーを使用して暗号化する必要があります。セキュリティ・ゾーンでリソースを作成および更新すると、OCIはセキュリティ・ゾーン・レシピのポリシーに対して操作を検証し、いずれかのポリシーに違反する操作を拒否します。

  • アプリケーションの開発

    Oracleのロー・コード開発プラットフォームであるOracle Application Express (Oracle APEX)は、データ・レイクハウス上にスケーラブルでセキュアなエンタープライズ・アプリケーションを構築するために使用できるツールの例です。

    Oracle APEXを使用すると、開発者は、実際の問題を解決し、即時の価値を提供する魅力的なアプリケーションを迅速に開発およびデプロイできます。高度なソリューションを提供するために、広範なテクノロジーの専門家である必要はありません。問題の解決に焦点を当て、Oracle APEXで残りの部分を処理します。世界クラスの機能があり、どこにでもデプロイできます。

デプロイ

このリファレンス・アーキテクチャのTerraformコードは、GitHubで入手できます。1回のクリックでコードをOracle Cloud Infrastructure Resource Managerにプルし、スタックを作成してデプロイできます。または、GitHubからコンピュータにコードをダウンロードし、コードをカスタマイズして、Terraform CLIを使用してアーキテクチャをデプロイすることもできます。

  • Oracle Cloud Infrastructure Resource Managerのサンプル・スタックを使用してデプロイします:
    1. Oracle Cloudへのデプロイをクリックします

      まだサインインしていない場合は、テナンシおよびユーザー資格証明を入力します。

    2. 条件をレビューして受け入れます。
    3. スタックをデプロイするリージョンを選択します。
    4. 画面上のプロンプトと手順に従ってスタックを作成します。
    5. スタックの作成後、「Terraformアクション」をクリックし、「プラン」を選択します。
    6. ジョブが完了するまで待機し、プランをレビューします。

      変更するには、「スタックの詳細」ページに戻り、「スタックの編集」をクリックして必要な変更を行います。次に、「プラン」アクションを再度実行します。

    7. これ以上の変更が必要ない場合は、「スタックの詳細」ページに戻り、「Terraformアクション」をクリックして「適用」を選択します。
  • GitHubでTerraformコードを使用してデプロイします。
    1. GitHubにアクセスします。
    2. リポジトリをローカル・コンピュータにクローニングまたはダウンロードします。
    3. READMEドキュメントの指示に従います。

謝辞

Author: Nuno Goncalves