コンテンツに移動
インフラ モダナイゼーション

Dataproc を使用した Kubernetes での Spark の実行

2022年4月26日
Google Cloud Japan Team

※この投稿は米国時間 2022 年 4 月 15 日に、Google Cloud blog に投稿されたものの抄訳です。


Apache Spark は、データ エンジニアリング、データ探索、機械学習のためのデファクト スタンダードとなっています。Kubernetes(k8s)と同様に、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するためのものです。オープンソース エコシステムは、YARN に加わるコンピューティング プラットフォームとしての k8s を使用する方向に収束しています。

そしてこのたび、Dataproc on Google Kubernetes Engine(GKE)が一般提供となり、k8s を活用してコンピューティング プラットフォームを管理、最適化できるようになったことをお知らせします。Dataproc クラスタを作成して、セルフマネージド GKE クラスタで Spark ジョブを送信できるようになりました。

Spark 向け Dataproc on GKE(一般提供)

K8s は、15 年間にわたって Google のコンテナ化されたワークロードを実行してきた経験と、オープンソース コミュニティによる価値ある貢献のもと、構築されています。Google の内部クラスタ管理システムである Borg にインスパイアされた K8s を利用すると、アプリケーションのデプロイと管理に関連するすべてが容易になります。k8s が幅広く採用される中、多くのお客様が k8s をコンピューティング プラットフォーム管理における標準としています。優れたアジリティ、セキュリティ、ポータビリティなど、数ある利点のなかで、アプリケーション管理の簡素化のためにアプリケーションをコンテナとして構築するという傾向が確認されています。

一般提供となった Dataproc on GKE では、Spark ワークロードをセルフマネージドの GKE クラスタで実行できます。完全に自動化され、最もスケーラブルで、費用が最適化された K8s サービスの利点を市場に提供し、GKE クラスタを導入してその上に Dataproc「仮想」クラスタを作成できます。Dataproc on Google Compute Engine(GCE)で行う場合と同じように、ジョブを送信してモニタリングできます。Dataproc Jobs API を使用してクラスタでジョブを送信します(オープンソースの Spark Submit は直接使用できません)。Dataproc のジョブはネイティブ コンテナとして送信されます。コンテナをカスタマイズして、アプリケーション用の追加のライブラリとデータを含めることもできます。

Dataproc on GCE の既存ユーザー向けのコンセプト

ノードプールのロール

Dataproc では、GKE ノードプールを使用して Dataproc クラスタ構成を管理します。ノードプールで使用するマシンタイプは選択できます。ノードプール内のすべてのノードは、同じ構成を使用します。以下のロールでノードプールを構成することで、Dataproc クラスタ構成を最適化できます。

  • デフォルト: ノードプール用のデフォルトのロールが 1 つ以上必要です。他のロールが定義されていない場合、デフォルトを使用してワークロードが実行されます。

  • コントローラ: 定義されている場合、Dataproc コントロール プレーンがこのノードプールを実行します。このロールのリソース要件は非常に低くなっています。

  • Spark ドライバ: 定義されている場合、Spark ジョブドライバがこのノードプール内で実行されます。これにより、ワークロードの特性に合わせてクラスタ構成を最適化できます。

  • Spark エグゼキュータ: 定義されている場合、Spark ジョブ エグゼキュータがこのノードプール内で実行されます。これにより、ジョブ エグゼキュータ環境を最適化できます。

Workload Identity

Dataproc は GKE Workload Identity を使用して、GKE クラスタ内の Pod がリンクされた Google サービス アカウントの権限で動作するようにします。これは、Dataproc on GCE のデフォルト サービス アカウントと非常に似ています。

自動スケーリング

Dataproc on GKE は、GKE クラスタ オートスケーラーを利用します。Dataproc によりノードプールが作成されたら、ノードプールの自動スケーリング ポリシーを定義して環境を最適化できます。

主な利点

GKE の専門知識があるプレビュー版のお客様の場合、すでに Dataproc を自身の環境に簡単に統合できる状態でしたが、今後は、Spark ワークロードを移行して実行環境を最適化し、効率性の改善とコスト削減を達成できます。Google の先進的なお客様は、厳しい SLA の要件を満たすための、ジョブ パフォーマンスを向上できる GPU を求めています。そのようなお客様は、この一般提供に伴い k8s の高度なコンピューティング管理機能やリソース共有機能を本番環境のワークロードで使えるようになることに期待を寄せています。

GKE で実行することで k8s の高度な機能を活用できるようになり、費用とパフォーマンスを最適化できます。

  • 同一クラスタ上で完全隔離されたジョブを実行

    • Dataproc クラスタを複数のアプリケーションで共有しながら個別のライブラリと依存関係を維持できるようになりました。それぞれのジョブを、それぞれのコンテナで実行できます。依存関係が競合する独立ジョブを、同じクラスタで同時に実行することが可能です。以前は、個別の環境のジョブごとに独占的なクラスタが必要でした。この制約が緩和されたことで、実行環境をより最適化できるようになりました。

  • 同じノードプールで複数クラスタを実行

    • 複数の Dataproc クラスタにまたがって同一のインフラストラクチャを運用できます。複数の Dataproc クラスタを同じノードプールで実行できるため、費用をさらに最適化できます。お客様の中には、複数の開発環境を同じインフラストラクチャで共有している方もいます。テスト、検証、認定環境でも同じことがあてはまります。

  • 同じインフラストラクチャで複数バージョンの Spark を実行

    • 同じノードプールで複数バージョンをサポートでき、Spark を 1 つのバージョンから他のバージョンに簡単に移行できるようになりました。2 つの個別の環境を構築する必要がなく、「既存」クラスタのスケールダウンと「アップグレードされた」クラスタのスケールアップを計画する必要がないため、クラスタ管理が簡素化されます。

Dataproc on GKE の主な特徴

Dataproc on GKE には以下のような主要な特徴があります。

  • Spark バージョン: Dataproc on GKE クラスタでは、Spark 2.4 および Spark 3.1 ジョブを実行できます。

  • Metastore 統合: Dataproc on GKE を Dataproc Metastore と統合できます。

  • ジョブレベルのアクセス制御: k8s RBAC と Workload Identity を活用して、ジョブレベルでのきめ細かいアクセス制御を指定できるようになりました。

  • 統一された Dataproc API: クラスタの管理やジョブの送信で同じ Dataproc API を使用でき、Dataproc on GCE と同じモニタリング機能を使用できます。

好みのインフラストラクチャ管理スタイルで Spark ジョブを実行

Dataproc on GKE の一般提供に伴い、組織は好みのインフラストラクチャ管理スタイルである、NoOps デプロイ向けのサーバーレス Spark で Spark ジョブを実行できるようになりました。インフラストラクチャ管理のために k8s を標準とするお客様は、Spark on GKE を実行してリソース使用率を向上させ、インフラストラクチャ管理を簡素化できます。VM スタイルのインフラストラクチャ管理を必要とするお客様は、GCE で Spark を実行できます。

次のステップ

Google は今後数か月間、データ サイエンティスト向けの Dataproc on GKE と Vertex AI Workbench の統合に積極的に取り組みます。この統合で、データ サイエンティストはインタラクティブ ワークロードでノートブックを使用できるようになり、ノートブック実行をスケジュールできるようにもなります。また、Enhanced Flex モード サポートの Dataproc on GKE への拡張も予定しており、プリエンプティブル VM の利点を最大化できるようになります。開始するには、こちらのクイックスタート リンクをご覧ください。

k8s コンピューティング管理の知識を活かし、Dataproc on GKE を活用して Spark ワークロードを実行できます。


- データ分析担当プロダクト マネージャー Susheel Kaushik
投稿先