Manager/WorkerモードでのApache Sparkクラスタのデプロイ

Apache Sparkは、データ分析のためのオープン・ソースのクラスタ生成フレームワークです。Oracle Cloud Infrastructureは、Apache Sparkベースのビッグ・データ・アプリケーションを実行および管理するための信頼性の高い高パフォーマンスのプラットフォームを提供します。

アーキテクチャ

このアーキテクチャでは、マネージャ/ワーカー・モデルを使用してApache SparkクラスタをOracle Cloud Infrastructureにデプロイします。これには、コンピュート・インスタンスで実行されるマネージャ・ノードと3つのワーカー・ノードがあります。

次の図は、この参照アーキテクチャを示しています。

spark-oci-png.pngの説明が続きます
図spark-oci-png.pngの説明

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

  • リージョン

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

  • 可用性ドメイン

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

  • フォルト・ドメイン

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

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

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

  • Apache Sparkマネージャおよび就業者

    Apache Sparkマネージャをホストするコンピュート・インスタンスがリージョナル・パブリック・サブネットにアタッチされます。就業者はリージョナル・プライベート・サブネットにアタッチされます。

  • ブロック・ストレージ

    ブロック・ストレージ・ボリュームを使用すると、ストレージ・ボリュームを作成、アタッチ、接続および移動したり、ストレージ、パフォーマンスおよびアプリケーションの要件を満たすようにボリューム・パフォーマンスを変更できます。ボリュームをアタッチしてインスタンスに接続した後、通常のハード・ドライブと同様にボリュームを使用できます。データを失うことなく、ボリュームを切断して別のインスタンスにアタッチすることもできます。

    このアーキテクチャ用に提供されるTerraformクイックスタート・テンプレートでは、ワーカー・ノードごとに700 GBのブロック・ボリュームがプロビジョニングされます。アーキテクチャのデプロイ時に、ブロック・ボリュームの数とサイズを選択できます。

    このアーキテクチャでは、ボリュームとアタッチされたインスタンス間の通信に、TCP/IPベースの標準であるiSCSIを使用します。

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

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

  • NATゲートウェイ

    NATゲートウェイを使用すると、VCNのプライベート・リソースは、受信インターネット接続に公開することなく、インターネット上のホストにアクセスできます。

推奨事項

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

  • VCN

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

    プライベート接続を設定する予定の他のネットワーク(Oracle Cloud Infrastructure、オンプレミス・データ・センターまたは別のクラウド・プロバイダ内)と重複しないCIDRブロックを選択します。

    VCNを作成した後、CIDRブロックを変更、追加および削除できます。

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

    リージョナル・サブネットの使用。

  • コンピュート・シェイプ

    このアーキテクチャでは、マネージャ・ノードとワーカー・ノードの両方に、VM.Standard2.1シェイプのOracle Linux 7.7 OSイメージを使用します。アプリケーションでより多くのメモリー、コアまたはネットワーク帯域幅が必要な場合は、別のシェイプを選択できます。

  • Apache SparkおよびHadoop

    Apache Sparkは単独で実行できますが、このアーキテクチャではHadoop上で実行されます。

    このアーキテクチャでは、単一のマネージャ・ノードと3つのワーカー・ノードがApache Sparkクラスタの一部としてデプロイされます。

  • セキュリティ
    • Oracle Cloud Guardを使用して、Oracle Cloud Infrastructureのリソースのセキュリティをプロアクティブに監視および維持します。Cloud Guardでは、定義可能なディテクタ・レシピを使用して、リソースにセキュリティ上の弱点がないかどうかを調べ、オペレータおよびユーザーのリスク・アクティビティを監視します。構成の誤りやセキュアでないアクティビティが検出された場合、Cloud Guardは修正処理を推奨し、定義可能なレスポンダ・レシピに基づいてそれらの処理を実行します。

    • 最大限のセキュリティが必要なリソースの場合、Oracleではセキュリティ・ゾーンを使用することをお薦めします。セキュリティ・ゾーンは、ベスト・プラクティスに基づくセキュリティ・ポリシーのOracle定義レシピに関連付けられたコンパートメントです。たとえば、セキュリティ・ゾーン内のリソースは、パブリック・インターネットからアクセスできず、顧客管理キーを使用して暗号化する必要があります。セキュリティ・ゾーンでリソースを作成および更新する場合、Oracle Cloud Infrastructureはセキュリティ・ゾーン・レシピのポリシーに対して操作を検証し、ポリシーに違反する操作を拒否します。

注意事項

  • パフォーマンス

    マネージャ・ノードとワーカー・ノードの両方のコンピュート・インスタンスにベア・メタル・シェイプを使用することを検討してください。ベア・メタルSparkクラスタでビッグ・データ・アプリケーションを実行すると、パフォーマンスが大幅に向上します。

  • 可用性

    フォルト・ドメインは、単一の可用性ドメイン内で最高の回復力を提供します。複数の可用性ドメインで同じタスクを実行するコンピュート・インスタンスをデプロイできます。この設計では、冗長性を導入することで単一点障害を解消します。

    また、追加のSparkマネージャ・ノードを高可用性のバックアップとして作成することも検討できます。

  • スケーラビリティ

    インスタンス・プールおよび自動スケーリング機能を使用して、アプリケーションをスケーリングできます。

    • インスタンス・プールを使用すると、同じリージョン内の同じ構成に基づいて複数のコンピュート・インスタンスをプロビジョニングおよび作成できます。
    • 自動スケーリングでは、CPU使用率などのパフォーマンス・メトリックに基づいて、インスタンス・プール内のコンピュート・インスタンスの数を自動的に調整できます。
  • 記憶域

    Oracle Cloud Infrastructure Object Storageを使用して、ブロック・ボリュームのかわりにデータを格納できます。オブジェクト・ストレージを使用する場合は、プライベート・サブネットのノードから接続するためのサービス・ゲートウェイを作成します。

    Oracleには、Hadoop Distributed File System (HDFS) Connector for Oracle Cloud Infrastructure Object Storageも用意されています。HDFSコネクタを使用すると、Apache Hadoopアプリケーションでオブジェクト・ストレージとの間でデータの読取りおよび書込みを行うことができます。

  • 管理性

    このアーキテクチャでは、Terraformを使用してインフラストラクチャを作成し、Sparkクラスタをデプロイします。

    かわりに、完全に管理されたサービスあるOracle Cloud Infrastructure Data Flowを使用できます。これにより、開発者およびデータ・サイエンティストは、クラスタ、操作チームまたは高度に特化したSparkの知識を必要とせずに、任意の規模でApache Sparkアプリケーションを作成、編集および実行できます。完全に管理されたサービスとして、デプロイまたは管理するインフラストラクチャはありません。

  • SECURITY

    ポリシーを使用して、Oracle Cloud Infrastructureリソースにアクセスできるユーザーおよび実行できるアクションを制限します。

デプロイ

この参照アーキテクチャのデプロイに必要なコードは、GitHubで入手できます。シングルクリックでコードをOracle Cloud Infrastructure Resource Managerにプルし、スタックを作成してデプロイできます。または、GitHubからコンピュータにコードをダウンロードし、Terraform CLIを使用してコードをカスタマイズし、アーキテクチャをデプロイします。

  • Oracle Cloud Infrastructure Resource Managerを使用してデプロイします。
    1. Oracle Cloudへのデプロイをクリックます

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

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

      変更を加えるには、「Stack Details」ページに戻り、「Edit Stack」をクリックして、必要な変更を行います。次に、プラン処理を再度実行します。

    7. 追加の変更が必要ない場合は、「Stack Details」ページに戻り、「Terraform Actions」をクリックして、「Apply」を選択します。
  • Terraform CLIを使用してデプロイします。
    1. GitHubに移動します。
    2. リポジトリをローカル・コンピュータにクローニングまたはダウンロードします。
    3. READMEドキュメントの手順に従います。

変更ログ

このログには、重要な変更がリストされます。