Managed Service for Apache Spark クラスタの構成

Cloud Data Fusion では、クラスタ構成は、Managed Service for Apache Spark で Spark ジョブを実行するときにデータ処理パイプラインがコンピューティング リソースをどのように使用するかを定義することを指します。このページでは、クラスタ構成の主なアプローチについて説明します。

デフォルトの一時クラスタ(推奨)

Cloud Data Fusion パイプラインでは、デフォルト クラスタの使用が推奨されるアプローチです。

  • Cloud Data Fusion は、各パイプライン実行用に一時的な Managed Service for Apache Spark クラスタを自動的にプロビジョニングして管理します。パイプライン実行の開始時点でクラスタを作成し、パイプラインの実行が完了した後に削除します。
  • エフェメラル クラスタのメリット:
    • シンプルさ: クラスタを手動で構成または管理する必要はありません。
    • 費用対効果: パイプラインの実行中に使用したリソースに対してのみ料金が発生します。

クラスタを調整してパフォーマンスをチューニングするには、クラスタのサイズ設定をご覧ください。

静的クラスタ(特定のシナリオの場合)

次のシナリオでは、静的クラスタを使用できます。

  • 長時間実行されるパイプライン: 継続的に実行されるパイプラインや長期間実行されるパイプラインの場合、静的クラスタは、エフェメラル クラスタを繰り返し作成して削除するよりも費用対効果が高くなる可能性があります。
  • クラスタの集中管理: 組織でクラスタの作成と管理ポリシーを一元的にコントロールする必要がある場合は、Terraform などのツールとともに静的クラスタを使用できます。
  • クラスタの作成時間: すべてのパイプライン用の新しいクラスタの作成に要する時間が、ユースケースに適していない場合。

ただし、静的クラスタでは手動構成が多く必要になり、クラスタのライフサイクルを自分で管理する必要があります。

静的クラスタを使用するには、Managed Service for Apache Spark クラスタで次のプロパティを設定する必要があります。

dataproc:dataproc.conscrypt.provider.enable=false
capacity-scheduler:yarn.scheduler.capacity.resource-calculator="org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator"

静的クラスタのクラスタ構成オプション

静的クラスタを使用する場合、Cloud Data Fusion には次の側面に関する構成オプションがあります。

  • ワーカー マシンタイプ: クラスタ内のワーカーノードの仮想マシンタイプを指定します。これにより、各ワーカーで使用可能な vCPU とメモリが決まります。
  • ワーカー数: クラスタ内のワーカーノードの初期数を定義します。Managed Service for Apache Spark は、ワークロードに基づいてこの数を自動スケーリングする場合があります。
  • ゾーン: クラスタの Google Cloud ゾーンを選択します。ロケーションは、データの局所性とネットワーク パフォーマンスに影響する可能性があります。
  • 追加の構成: プリエンプション設定、ネットワーク設定、初期化アクションなど、静的クラスタの高度なオプションを構成できます。

ベスト プラクティス

パイプライン用の静的クラスタを作成する場合は、次の構成を使用します。

パラメータ 説明
yarn.nodemanager.delete.debug-delay-sec YARN のログを保持します。
推奨値: 86400(1 日に相当します)
yarn.nodemanager.pmem-check-enabled YARN が物理メモリの上限を確認して、コンテナが物理メモリを超過した場合にコンテナを強制終了できるようにします。
推奨値: false
yarn.nodemanager.vmem-check-enabled YARN が仮想メモリの上限を確認し、コンテナが物理メモリを超過した場合にコンテナを強制終了できるようにします。
推奨値: false
dataproc.scheduler.driver-size-mb ドライバの平均メモリ使用量により、マスターノードにドライバ プロセスを実行するのに十分なメモリがない場合、Managed Service for Apache Spark はジョブをキューに登録します。これはジョブの同時実行に影響する可能性がありますが、メモリの多いマスターノードを使用することで軽減できます。
推奨値: 2048

詳細については、既存の Managed Service for Apache Spark クラスタに対してパイプラインを実行するをご覧ください。

クラスタの再利用

Managed Service for Apache Spark クラスタを実行間で再利用して、処理時間を短縮できます。クラスタの再利用は、接続プーリングやスレッド プーリングと同様のモデルで実装されます。実行が完了すると、クラスタは指定された期間稼働し続けます。新しい実行が開始されると、コンピューティング プロファイルの構成に一致する使用可能なアイドル状態のクラスタが検索されます。存在する場合はそれが使用され、存在しない場合は新しいクラスタが開始されます。

クラスタの再利用に関する考慮事項

  • クラスタは共有されません。通常のエフェメラル クラスタ プロビジョニング モデルと同様に、クラスタは一度に 1 つのパイプライン実行を実行します。クラスタは、アイドル状態の場合にのみ再利用されます
  • すべての実行でクラスタの再利用を有効にすると、すべての実行を処理するために必要な数のクラスタが必要に応じて作成されます。エフェメラル Managed Service for Apache Spark プロビジョナーと同様に、作成されるクラスタの数を直接制御することはできません。リソースの管理には、引き続き Google Cloud 見積もりを使用できます。たとえば、最大 7 件の並列実行で 100 件実行する場合、特定の時点で最大 7 つのクラスタが存在します。
  • クラスタは、異なるパイプラインが同じプロファイルを使用し、同じプロファイル設定を共有するとすぐに、それらのパイプライン間で再利用されます。プロファイルのカスタマイズを使用している場合でも、クラスタは再利用されますが、カスタマイズが完全に同じである場合に限られます。これには、クラスタのラベル付けなどのすべてのクラスタ設定が含まれます。

  • クラスタの再利用が有効になっている場合、主に次の 2 つの費用に関する考慮事項があります。

    • クラスタの起動と初期化に使用されるリソースが少なくなります。
    • クラスタは、パイプライン実行の間や最後のパイプライン実行後にアイドル状態になるため、より多くのリソースが使用されます。

クラスタの再利用による費用の削減効果を予測することは困難ですが、費用を最大限に削減するための戦略を採用できます。この戦略では、チェーンされたパイプラインのクリティカル パスを特定し、このクリティカル パスでクラスタの再利用を有効にします。これにより、クラスタがすぐに再利用され、アイドル時間が無駄にならず、最大のパフォーマンス上のメリットが得られます。

クラスタの再利用を有効にする

デプロイされたパイプライン構成の [コンピューティング構成] セクションで、または新しいコンピューティング プロファイルを作成するときに、次のようにします。

  • [クラスタの削除をスキップ] を有効にします。
  • 最大アイドル時間は、クラスタが次のパイプラインを再利用するために待機する時間です。デフォルトの最大アイドル時間は 30 分です。最大アイドル時間については、再利用のコストとクラスタの可用性を考慮してください。最大アイドル時間の値が大きいほど、実行の準備が整った状態でアイドル状態になっているクラスタの数が増えます。

トラブルシューティング: バージョンの互換性

問題: Cloud Data Fusion 環境のバージョンが Managed Service for Apache Spark クラスタのバージョンと互換性がない場合があります。

推奨: 最新の Cloud Data Fusion バージョンにアップグレードし、サポートされている Managed Service for Apache Spark バージョンのいずれかを使用します。

以前のバージョンの Cloud Data Fusion は、サポートされていないバージョンの Managed Service for Apache Spark とのみ互換性があります。Managed Service for Apache Spark は、これらのバージョンで作成されたクラスタの更新とサポートを提供していません。サポートされていないバージョンで作成されたクラスタを引き続き実行することはできますが、サポートされているバージョンで作成されたクラスタに置き換えることをおすすめします。

Cloud Data Fusion のバージョン Managed Service for Apache Spark のバージョン
6.11.1 2.3、2.2***、2.1
6.10.1.1 2.2***、2.1、2.0 *
6.10 2.1、2.0 *
6.9 2.1、2.0、1.5 *
6.7-6.8 2.0、1.5 *
6.4-6.6 2.0 *, 1.3 **
6.1-6.3 1.3**

* Cloud Data Fusion バージョン 6.4 以降は、 Managed Service for Apache Spark のサポート対象バージョンと互換性があります。特定の OS 機能が必要でない限り、major.minor イメージのバージョンを指定することをおすすめします。
Managed Service for Apache Spark クラスタで使用する OS バージョンを指定するには、OS バージョンが、前の表で お使いの  Cloud Data Fusion 用にサポートされている Managed Service for Apache Spark バージョンと互換性がある必要があります。

** Cloud Data Fusion バージョン 6.1 ~ 6.6 は、 サポートされていない Managed Service for Apache Spark バージョン 1.3 と互換性があります。

*** この画像モードで特定の 問題が検出されています。この Managed Service for Apache Spark イメージ バージョンは、本番環境での使用にはおすすめしません。

トラブルシューティング: コンテナがゼロ以外の終了コード 3 で終了した

問題: 自動スケーリング ポリシーが使用されておらず、静的 Managed Service for Apache Spark クラスタでメモリ プレッシャーが発生しているため、ログにメモリ不足例外(Container exited with a non-zero exit code 3)が表示されます。

推奨: エグゼキュータのメモリを増やします。

メモリを増やすには、パイプラインに task.executor.system.resources.memory ランタイム引数を追加します。次のランタイム引数の例では、メモリを 4,096 MB に設定しています。

"task.executor.system.resources.memory": 4096

詳細については、クラスタのサイジングをご覧ください。

次のステップ