Apache Spark 向け Google Cloud Serverless との比較

Apache Spark を使用してデータの処理と分析のワークロードを実行している Google Cloud のお客様にとって重要な決定の一つは、Dataproc on Compute Engine(このドキュメントでは「Dataproc」と呼びます)と Apache Spark 向け Serverless のどちらを選択するかです。どちらのサービスも、OSS 互換でデータ形式を完全にサポートする、スケーラビリティが高くプロダクション レディで安全なマネージド Spark 環境を提供しますが、基盤となるインフラストラクチャの管理方法と課金方法が根本的に異なります。

このドキュメントでは、最適な Spark ワークロード ソリューションの決定に役立つように、Apache Spark 向けGoogle Cloud Serverless と Dataproc を比較して、それぞれの特長と機能の一覧を示します。

Apache Spark 向け Serverless と Dataproc を比較する

インフラストラクチャをプロビジョニングして管理し、Spark や他のオープンソース処理フレームワークでワークロードを実行する場合は、Compute Engine 上の Dataproc を使用します。次の表に、Compute Engine 上の Dataproc と Apache Spark 用 Serverless の主な違いを示します。

能力 Serverless for Apache Spark Compute Engine 上の Dataproc
処理フレームワーク バッチ ワークロードとインタラクティブ セッション: Spark Spark。その他のオープンソース フレームワーク(Hive、Flink、Trino、Kafka など)
サーバーレス ×
スタートアップ時間 50 代 120 秒
インフラストラクチャの制御 ×
リソース管理 サーバーレス YARN
GPU のサポート はい
インタラクティブ セッション ×
カスタム コンテナ はい ×
VM アクセス(SSH) ×
Java のバージョン Java 17、21 Java 17 以前のバージョン

最適な Spark サービスを決定する

このセクションでは、各サービスの主な強みと主なユースケースの概要を説明し、Spark ワークロードに最適なサービスを選択できるようにします。

概要

Dataproc と Apache Spark 向け Serverless は、それぞれが提供する制御の程度、インフラストラクチャ管理、課金モードが異なります。

  • Dataproc マネージド Spark: Dataproc は、Compute Engine インフラストラクチャでマネージド Spark を実行する Spark クラスタをサービスとして提供します。クラスタの稼働時間に対して料金が発生します。
  • Apache Spark 向け Serverless: Apache Spark 向け Serverless は、フルマネージド Google Cloudインフラストラクチャで Spark を実行する Spark-jobs-as-a-service を提供します。ジョブの実行時間に対して料金が発生します。

このような違いがあるため、各サービスは次のユースケースに最適です。

サービス ユースケース
Dataproc 長時間実行の共有環境
インフラストラクチャのきめ細かい制御を必要とするワークロード
以前の Hadoop 環境と Spark 環境の移行
Serverless for Apache Spark さまざまな専用ジョブ環境
バッチ ワークロードのスケジュール設定
インフラストラクチャ管理よりもコード管理を優先

主な違い

機能 Dataproc Serverless for Apache Spark
管理モデル クラスタベース。クラスタをプロビジョニングして管理します。 フルマネージドのサーバーレス実行環境。
細かい管理と高度なカスタマイズ クラスタ構成、マシンタイプ、ソフトウェアをより詳細に制御できます。Spot VM を使用し、予約と Compute Engine リソース容量を再利用できます。CPU アーキテクチャなど、特定の VM シェイプに依存するワークロードに適しています。 インフラストラクチャの制御が少なく、コードの送信と Spark パラメータの指定に重点が置かれています。
ユースケース 長時間実行される共有クラスタ、カスタム構成で既存の Hadoop ワークロードと Spark ワークロードを移行する、詳細なカスタマイズを必要とするワークロード。 アドホック クエリ、インタラクティブ分析、新しい Spark パイプライン、リソースのニーズが予測できないワークロード。
運用上のオーバーヘッド クラスタの管理、スケーリング、メンテナンスが必要になるため、オーバーヘッドが大きくなります。 オーバーヘッドの削減。 Google Cloud は、インフラストラクチャ、スケーリング、プロビジョニングを管理し、NoOpsモデルを可能にします。Gemini Cloud Assist を使用すると、トラブルシューティングが容易になります。また、Apache Spark 向け Serverless の自動チューニングにより、最適なパフォーマンスを実現できます。
効率モデル 共有、マルチテナンシー モデルにより、ジョブとチーム間でクラスタを共有することで効率が向上します。 コンピューティングのアイドル状態のオーバーヘッドなし: ジョブの実行時にのみコンピューティング リソースが割り当てられます。起動とシャットダウンの費用はかかりません。効率向上のために、共有インタラクティブ セッションがサポートされています。
位置情報の管理 クラスタはゾーンです。クラスタの作成時にゾーンを自動選択できます。 Apache Spark 向け Serverless は、追加費用なしでリージョン ワークロードをサポートし、信頼性と可用性を高めます。
費用 ノード数に基づいて、クラスタの実行時間(起動と停止を含む)に対して課金されます。Dataproc ライセンス料とインフラストラクチャ費用が含まれます。 消費されたリソースに基づいて、起動と停止を除く Spark ジョブの実行時間に対してのみ課金されます。使用されたデータ コンピューティング ユニット(DCU)とその他のインフラストラクチャ費用として課金されます。
確約利用割引(CUD) Compute Engine CUD は、すべてのリソース使用量に適用されます。 BigQuery の費用ベースの CUD は、Apache Spark 向け Serverless ジョブに適用されます。
イメージとランタイムの制御 ユーザーは、マイナー バージョンとサブマイナー バージョンの Dataproc イメージ バージョンに固定できます。 ユーザーは、Apache Spark 用 Serverless のマイナー ランタイム バージョンに固定できます。サブマイナー バージョンは、Apache Spark 用 Serverless によって管理されます。
リソース管理 YARN サーバーレス
GPU のサポート はい はい
インタラクティブ セッション × はい
カスタム コンテナ × はい
VM アクセス(SSH) はい ×
Java バージョン サポートされている以前のバージョン Java 1721
起動時間 120 秒 50 代

Dataproc を選択する場合

Dataproc は、Apache Spark やその他のオープンソースのデータ処理フレームワークを実行するために使用できるマネージド サービスです。制御性と柔軟性が高いため、次のシナリオで推奨されます。

  • 既存の Hadoop ワークロードと Spark ワークロードの移行: オンプレミスの Hadoop クラスタまたは Spark クラスタを Google Cloudに移行することをサポートします。特に古い Spark バージョンを使用している場合は、コードの変更を最小限に抑えて既存の構成を複製します。
  • 詳細なカスタマイズと制御: クラスタのマシンタイプ、ディスクサイズ、ネットワーク構成をカスタマイズできます。このレベルの制御は、複雑で長時間実行されるジョブのパフォーマンス チューニングとリソース使用率の最適化に不可欠です。
  • 長時間実行される永続クラスタ: 複数のチームとプロジェクトの継続的な長時間実行される Spark ジョブと永続クラスタをサポートします。
  • 多様なオープンソース エコシステム: Hive、Pig、Presto などの Hadoop エコシステム ツールを実行するデータ処理パイプラインを Spark ワークロードで実行するための統合環境を提供します。
  • セキュリティ コンプライアンス: インフラストラクチャを制御して、個人を特定できる情報(PII)や保護医療情報(PHI)の保護など、特定のセキュリティまたはコンプライアンス基準を満たすことができます。
  • インフラストラクチャの柔軟性: Spot VM を提供し、予約と Compute Engine リソース容量を再利用してリソース使用量のバランスを取り、クラウド インフラストラクチャ戦略を促進します。

Apache Spark 向け Serverless を選択する場合

Serverless for Apache Spark は、クラスタ管理の複雑さを抽象化し、Spark コードに集中できるようにします。そのため、次のデータ処理シナリオでの使用に最適です。

  • アドホック分析とインタラクティブ分析: Spark を使用してインタラクティブ クエリと探索的分析を実行するデータ サイエンティストやアナリストにとって、サーバーレス モデルはインフラストラクチャに集中することなく迅速に開始できる方法です。
  • Spark ベースのアプリケーションとパイプライン: Spark で新しいデータ パイプラインまたはアプリケーションを構築する場合、Serverless for Apache Spark はクラスタ管理の運用オーバーヘッドを排除することで、開発を大幅に加速できます。
  • 需要が散発的または予測不可能なワークロード: 断続的な Spark ジョブやリソース要件が変動するジョブの場合、Apache Spark 向け Serverless の自動スケーリングと従量課金制(ジョブのリソース消費に料金が適用される)により、コストを大幅に削減できます。
  • デベロッパーの生産性向上に重点を置く: Serverless for Apache Spark は、クラスタのプロビジョニングと管理の必要性を排除することで、ビジネス ロジックの作成を迅速化し、インサイトを迅速に提供し、生産性を向上させます。
  • 運用の簡素化とオーバーヘッドの削減: Apache Spark 向け Serverless のインフラストラクチャ管理により、運用上の負担とコストが軽減されます。

まとめ

Dataproc を使用するか、Apache Spark 向け Serverless を使用するかは、ワークロードの要件、運用の設定、必要な制御レベルによって異なります。

  • Dataproc を選択するのは、最大限の制御が必要な場合、Hadoop ワークロードまたは Spark ワークロードを移行する必要がある場合、または永続的なカスタマイズされた共有クラスタ環境が必要な場合です。
  • Apache Spark 向け Serverless を選択すると、使いやすさ、断続的なワークロードの費用対効果、インフラストラクチャ管理のオーバーヘッドを排除することで新しい Spark アプリケーションの開発を加速できるというメリットがあります。

このセクションに記載されている要素を評価したら、Spark を実行してデータの可能性を最大限に引き出すために、最も効率的で費用対効果の高いサービスを選択します。