このページでは、Dataproc Serverless に関するよくある質問と回答を紹介します。
Compute Engine 上の Dataproc ではなく Dataproc Serverless for Spark を使用すべき場合とはどのようなときですか?
Dataproc Serverless:
- PySpark カーネル Jupyter ノートブックで Spark バッチ ワークロードとインタラクティブ セッションをサポートします。
- Dataproc Serverless は、ワークロードとインタラクティブなセッション インフラストラクチャを作成、管理します。
Compute Engine 上の Dataproc:
異なるタイプの Spark ジョブ、Flink、Hadoop、Hive、Pig、Presto などの他のオープンソース コンポーネントに基づくジョブの送信をサポートします。
インフラストラクチャを作成、管理しません。Dataproc クラスタを作成して管理します。
Dataproc Serverless for Spark では何ができますか?
サーバーレス バッチとインタラクティブ ノートブックのセッションに Dataproc JupyterLab プラグインを使用する。
Spark ストリーミング ライブラリを使用してストリーミング ジョブを実行する。注: ストリーミングはマネージド サービスではないため、チェックポインティングと再起動を管理する必要があります。
Spark MLlib を使用してモデルをトレーニングする。
インタラクティブな SQL ノートブックを使用して、データ探索、グラフ、時系列、地理空間分析を行う。
Apache Airflow のマネージド サービスである Cloud Composer を使用して、Dataproc Serverless for Spark ワークロードをオーケストレートする。
ワークロードの実行プランはどのように設定すればよいですか?
ワークロードは同時実行することも、順次実行することもできます。実行プランは Google Cloud リソースの割り当てに影響します。バッチリソース割り当てで許される限り多くのワークロードを並列に実行できます。
Dataproc Serverless for Spark でカスタム イメージを使用できますか?
- はい。デフォルトのコンテナ イメージの代わりに、カスタム コンテナ イメージを使用できます。Dataproc Serverless for Spark でカスタム コンテナを使用するをご覧ください。
Dataproc Serverless Spark ワークロードのメモリリソースとディスク リソースを指定できますか?
はい。プレミアム エグゼキュータとドライバのコンピューティングおよびディスク階層と、ワークロードの送信時に割り当てるドライバとエグゼキュータのコンピューティング リソースとディスク リソースの量を指定できます(リソース割り当てプロパティを参照)。
Dataproc Serverless VPC ネットワークの IP アドレス範囲を指定するにはどうすればよいですか?
Dataproc Serverless for Spark のワークロードは環境内で実行されます。Serverless Spark ワークロードの各 Spark ドライバと Spark エグゼキュータは、Dataproc Serverless VPC ネットワークの 1 つの内部 IP アドレスを消費します。/16
は、Dataproc Serverless VPC ネットワークの一般的なユーザー指定 CIDR アドレス範囲です。実行する予定の同時実行ワークロードの数に基づいて、ネットワークの IP アドレス範囲を制限できます。
Dataproc Serverless はデータ所在地をサポートしていますか?
はい。ワークロードを処理するリージョンを指定します。指定したリージョンで入出力データセットを特定します。
Dataproc Serverless は、ワークロードを実行するために、指定したリージョン内のゾーンをどのように選択しますか?
Dataproc Serverless は、容量と可用性に基づいてワークロードを実行する Compute Engine ゾーンを選択します。ワークロードの開始後にゾーンが使用不能になると、ワークロードは失敗するため、失敗したワークロードを再送信する必要があります。
Dataproc Serverless ワークロードでは、コンピューティング リソースをどのように使用しますか?
各ワークロードは独自のコンピューティング リソースで実行されます。複数のバッチ送信では、コンピューティング リソースの共有や再利用は行われません。
ベスト プラクティス:
実行時間が短いジョブではなく、中規模のジョブに合わせてワークロードを最適化する。
Cloud Storage の複数のワークロードがアクセスするデータを保持します。
Dataproc Serverless のお知らせ、機能、バグ修正、既知の問題、非推奨に関する情報はどこで確認できますか?
Dataproc Serverless のリリースノートをご覧ください。
同時実行ワークロードはリソースと競合しますか?
Dataproc Serverless ワークロードは、同時に実行されるすべてのワークロードを実行するのにリソースの割り当てが不十分な場合にのみ、リソースに対して競合します。それ以外の場合、ワークロードは互いに完全に分離されます。
Dataproc Serverless の割り当てはどのように割り当てられますか?
Dataproc Serverless バッチは、Google Cloud リソースを消費します。詳細については、Dataproc Serverless の割り当てをご覧ください。
Dataproc の永続的履歴サーバーを設定する必要はありますか?
Dataproc Serverless で使用する永続履歴サーバー(PHS)の設定はオプションです。PHS を使用して、指定した Cloud Storage バケット内の Spark イベントやその他のログを、標準の Dataproc サーバーレスのステージング バケットと一時バケットの 90 日間の保持期間(TTL)が経過した後に最大限表示できます。
どのような Dataproc Serverless Spark ログを利用できますか?
Spark エグゼキュータとドライバログは、Spark ワークロードの実行中と実行後に Cloud Logging で使用できます。また、Spark アプリケーションはワークロードの実行中に永続的履歴サーバー(PHS)のウェブ インターフェースに表示されます(PHS の UI で PHS > 不完全なアプリケーションを選択)。
Dataproc PHS を設定すると、Cloud Storage に保存されている Spark イベントログに永続的にアクセスできます。このログは、Spark アプリケーションの実行に関する有益な情報(DAG、エグゼキュータ イベントなど)を提供します。
Spark ワークロードのエグゼキュータの数を設定できますか?
はい。Spark ワークロードのエグゼキュータの数は、spark.executor.instances
プロパティを使用して設定できます。ただし、Spark はコアごとに 1 つのタスクを実行するため、ワークロードが使用できるコアの合計数はエグゼキュータの数よりも重要です。たとえば、ワークロードにそれぞれ 2 つのコアを持つ 4 つのエグゼキュータがある場合、4 * 2 = 8
タスクを同時に実行します。また、それぞれ 4 つのコアを持つ 2 つのエグゼキュータがあるワークロードに対して、同じ数のタスクを実行します。各ワークロードのコア数は同じであるため、同じ数のタスクを実行します。spark.executor.cores
プロパティを使用して、Dataproc Serverless ワークロードのエグゼキュータあたりのコア数を設定できます。
Dataproc Serverless での自動スケーリングに使用される Spark 指標にはどのようなものがありますか?
Dataproc Serverless for Spark は、maximum-needed
と running
の Spark の動的割り当て指標を調べて、スケールアップまたはスケールダウンするかどうかを決定します。Dataproc Serverless for Spark の自動スケーリングをご覧ください。
Spark プロパティを使用して、Dataproc Serverless 自動スケーリングの動作を構成できますか?
はい。Dataproc Serverless 自動スケーリングは、Spark 動的割り当てに基づいており、デフォルトで有効になっています。次の Spark プロパティと Spark 動的割り当てプロパティを調整できます。
spark.executor.instances
spark.dynamicAllocation.initialExecutors
spark.dynamicAllocation.minExecutors
spark.dynamicAllocation.maxExecutors
Spark ワークロードを送信するために、コードを JAR ファイルにパッケージ化する必要があるのはなぜですか?
Spark は Scala で記述されています。つまり、ドライバとワーカー プロセスの両方が JVM プロセスとして動作することを意味します。JVM 言語では、JAR ファイルがコードをパッケージ化する基本的な方法です。ワークロードを送信するときに、JAR ファイルを Dataproc Serverless に渡します。