Skip to content

EKS 上の Spark 詳細ガイド ​

レビュー基準: Apache Spark 4.2.0、Kubernetes 1.34 以降
最終レビュー日: 2026年9月12日

Apache Spark は、バッチ、SQL、ストリーミングなどの分散データワークロードを実行します。 Kubernetes のネイティブサポートは Spark 2.3 で導入され、クライアントモードのサポートは 2.4 で追加されました。Spark 4.2.0 では、前提条件として Kubernetes 1.34 以降が記載されています。 固定の古い最小バージョンではなく、実際の EKS バージョンと互換性のある kubectl を使用してください。

Spark は、別個の Spark Standalone master や YARN ResourceManager を用意せずに、 すでに運用している Kubernetes のキャパシティとコントロールプレーンを利用できます。 ただし、ノード容量、イメージ、ID、ネットワーク、ストレージ、オブザーバビリティの運用または プロビジョニングは引き続き必要です。YARN ResourceManager/NodeManager は YARN のコンポーネントであり、 Spark 固有のデーモンではありません。

実行に関する責任 ​

クラスターデプロイモードでは、送信側クライアントが Kubernetes API にドライバーポッドの作成を要求します。 Kubernetes のアドミッション、スケジューリング、ノードの kubelet が、ポッドの配置と起動を処理します。 Spark ドライバーはエグゼキューターポッドを要求し、Spark のステージとタスクを調整します。 Kubernetes スケジューラーの代わりになるわけではありません。

エグゼキューターはドライバーに登録し、Spark の処理のためにドライバーと直接通信します。 Kubernetes は引き続きエグゼキューターポッドのライフサイクルを管理します。 クライアントモードでは、ドライバーは送信側アプリケーションとともに、ポッド内または別のホスト上で実行されます。 この場合、ドライバーがエグゼキューターから到達可能である必要があります。どちらのモードも Spark アプリケーションをサポートします。

Kubernetes API を経由するクラスターモードの Spark 送信。ポッドの配置と起動は、ドライバーによる Spark タスクの調整と分けて示されています。

Kubernetes API を経由するクラスターモードの Spark 送信。ポッドの配置と起動は、ドライバーによる Spark タスクの調整と分けて示されています。全画面で開く ↗

章 ​

  1. Kubernetes 上の Spark の基礎: クラスター/クライアント送信、リソースのマッピング、動的割り当て、デコミッショニングの条件。
  2. Spark Operator: Apache と Kubeflow の各 Operator、その API、ジョブのライフサイクル、送信、監視の違い。
  3. EMR on EKS: 仮想クラスター、ジョブの送信、実行 ID。マネージドランタイムの機能と EKS キャパシティ運用の違い。
  4. パフォーマンスとコスト: shuffle/ストレージ/CPU/メモリのボトルネック、適切なノード機能、Spot からの復旧、エグゼキューターとノードのスケーリング。
  5. ベストプラクティスとセキュリティ: Kubernetes と AWS の ID、データアクセス、イベントログ/履歴、メトリクス、ネットワークポリシー、復旧。

Spark の動的リソース割り当ては、アプリケーション内のエグゼキューター数を調整します。 これはデバイス用の Kubernetes Dynamic Resource Allocation や、ノードのオートスケーリングとは別の機能です。 デコミッショニングによって再計算を減らせることがありますが、強制終了時にすべてのブロックが保持される保証はありません。

参考資料 ​

クイズ ​

Spark の基礎クイズ

ドキュメントに質問する

Enter で送信、Shift+Enter で改行します。