このページでは、Dataproc サーバーレスに関するよくある質問と回答を紹介します。
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 は、Spark の動的割り当て指標 maximum-needed
と running
を確認し、スケールアップまたはスケールダウンするかどうかを決定します。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 に渡します。