Serverless for Apache Spark に関するよくある質問

このページでは、 Google Cloud Serverless for Apache Spark に関するよくある質問とその回答を紹介します。

Compute Engine 上の Dataproc ではなく Serverless for Apache Spark を使用すべき場合とはどのようなときですか?

  • Apache Spark 用 Serverless:

    • PySpark カーネル Jupyter ノートブックで Spark バッチ ワークロードとインタラクティブ セッションをサポートします。
    • Apache Spark 用 Serverless は、ワークロードとインタラクティブなセッション インフラストラクチャを作成、管理します。
  • Compute Engine 上の Dataproc:

    • さまざまなタイプの Spark ジョブと、Flink、Hadoop、Hive、Pig、Presto などの他のオープンソース コンポーネントに基づくジョブの送信をサポートします。

    • インフラストラクチャの作成と管理は行いません。Dataproc クラスタを作成して管理します。

Serverless for Apache Spark では何ができますか?

ワークロードの実行プランはどのように設定すればよいですか?

ワークロードは、同時または順番に実行できます。実行プランは Google Cloud リソース割り当てに影響します。バッチリソースの割り当てで許可されている数のワークロードを並行して実行できます。

Serverless for Apache Spark でカスタム イメージを使用できますか?

Apache Spark 用 Serverless の Spark ワークロードにメモリリソースとディスク リソースを指定できますか?

はい。プレミアム エグゼキュータとドライバのコンピューティングおよびディスク階層と、ワークロードの送信時に割り当てるドライバとエグゼキュータのコンピューティング リソースとディスク リソースの量を指定できます(リソース割り当てプロパティを参照)。

Serverless for Apache Spark VPC ネットワークの IP アドレス範囲を指定するにはどうすればよいですか?

Apache Spark ワークロード用のサーバーレスは、環境内で実行されます。Serverless Spark ワークロードの各 Spark ドライバと Spark エグゼキュータは、Apache Spark 用サーバーレス VPC ネットワークの 1 つの内部 IP アドレスを消費します。/16 は、Apache Spark 用サーバーレス VPC ネットワークの一般的なユーザー指定 CIDR アドレス範囲です。実行する予定の同時実行ワークロードの数に基づいて、ネットワークの IP アドレス範囲を制限できます。

Apache Spark 用 Serverless はデータ所在地をサポートしていますか?

はい。ワークロードが処理されるリージョンを指定します。指定したリージョンで入出力データセットを特定します。

Serverless for Apache Spark は、ワークロードを実行するために、指定したリージョン内のゾーンをどのように選択しますか?

Serverless for Apache Spark は、容量と可用性に基づいてワークロードを実行する Compute Engine ゾーンを選択します。ワークロードの開始後にゾーンが使用できなくなると、ワークロードは失敗します。失敗したワークロードを再送信する必要があります。

Apache Spark 向けサーバーレス ワークロードでは、コンピューティング リソースをどのように使用しますか?

各ワークロードは独自のコンピューティング リソースで実行されます。複数のバッチ送信でコンピューティング リソースが共有または再利用されることはありません。

ベスト プラクティス:

  • 短時間実行ジョブではなく、中時間実行ジョブに合わせてワークロードを最適化します。

  • Cloud Storage の複数のワークロードがアクセスするデータを保持します。

Serverless for Apache Spark のお知らせ、機能、バグの修正、既知の問題、非推奨に関する情報はどこで確認できますか?

Apache Spark 用 Serverless のリリースノートをご覧ください。

同時実行ワークロードはリソースと競合しますか?

Apache Spark 用 Serverless ワークロードは、同時に実行されるすべてのワークロードを実行するのにリソースの割り当てが不十分な場合にのみ、リソースに対して競合します。それ以外の場合、ワークロードは互いに完全に分離されます。

Apache Spark 用 Serverless の割り当てはどのように割り当てられますか?

Apache Spark バッチ用のサーバーレスは、 Google Cloud リソースを消費します。詳細については、Dataproc Serverless の割り当てをご覧ください。

Dataproc の永続的履歴サーバーを設定する必要はありますか?

Apache Spark 用 Serverless で使用する永続履歴サーバー(PHS)の設定はオプションです。PHS を使用して、指定した Cloud Storage バケット内の Spark イベントやその他のログを、標準の Apache Spark 用 Serverless のステージング バケットと一時バケットの 90 日間の保持期間(TTL)が経過した後に最大限表示できます。

Apache Spark 用 Serverless でどのような Spark ログを利用できますか?

Spark エグゼキュータとドライバのログは、Spark ワークロードの実行中と実行後に Cloud Logging で使用できます。また、Spark アプリケーションはワークロードの実行中に永続的履歴サーバー(PHS)のウェブ インターフェースに表示されます(PHS の UI で PHS > 不完全なアプリケーションを選択)。

Dataproc PHS を設定すると、Cloud Storage に保存されている Spark イベントログに永続的にアクセスできます。このログは、Spark アプリケーションの実行に関する有益な情報(DAG、エグゼキュータ イベントなど)を提供します。

Spark ワークロードのエグゼキュータ数を設定できますか?

はい。spark.executor.instances プロパティを使用して、Spark ワークロードのエグゼキュータの数を設定できます。ただし、Spark はコアごとに 1 つのタスクを実行するため、ワークロードが使用できるコアの合計数がエグゼキュータの数よりも重要です。たとえば、ワークロードにそれぞれ 2 つのコアを持つ 4 つのエグゼキュータがある場合、4 * 2 = 8 タスクを同時に実行します。また、それぞれ 4 つのコアを持つ 2 つのエグゼキュータがあるワークロードに対して、同じ数のタスクを実行します。各ワークロードのコア数は同じであるため、実行されるタスクの数も同じになります。spark.executor.cores プロパティを使用して、Apache Spark ワークロードのエグゼキュータあたりのコア数を設定できます。

Serverless for Apache Spark での自動スケーリングに使用される Spark 指標にはどのようなものがありますか?

Apache Spark 用サーバーレスは、maximum-neededrunning の Spark の動的割り当て指標を調べて、スケールアップまたはスケールダウンするかどうかを決定します。Apache Spark 用 Serverless の自動スケーリングをご覧ください。

Spark プロパティを使用して、Serverless for Apache Spark 自動スケーリングの動作を構成できますか?

はい。Apache Spark 用サーバーレスの自動スケーリングは Spark の動的割り当てに基づいており、デフォルトで有効になっています。次の Spark プロパティSpark 動的割り当てプロパティを調整できます。

  • spark.executor.instances
  • spark.dynamicAllocation.initialExecutors
  • spark.dynamicAllocation.minExecutors
  • spark.dynamicAllocation.maxExecutors

Spark ワークロードを送信するためにコードを JAR ファイルにパッケージ化する必要があるのはなぜですか?

Spark は Scala で記述されているため、ドライバ プロセスとワーカー プロセスはどちらも JVM プロセスとして動作します。JVM 言語では、JAR ファイルはコードをパッケージ化する主な方法です。ワークロードを送信するときに、JAR ファイルを Apache Spark 向け Serverless に渡します。