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

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

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

  • Serverless for Apache Spark:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ベスト プラクティス:

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

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

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

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

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

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

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

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

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

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

どのような Serverless for Apache Spark 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 ワークロードのエグゼキュータあたりのコア数を設定できます。

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

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

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

はい。Serverless for 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 ファイルを Serverless for Apache Spark に渡します。