このドキュメントでは、Dataproc Spark のパフォーマンスの向上を有効にして、コストを削減し、Dataproc Spark ジョブがより多くのデータをより迅速に処理する方法について説明します。
Dataproc Spark のパフォーマンスの向上には、次のようなものがあります。
- Spark オプティマイザーの機能拡張:
- 作成されたオプティマイザー ルールで、Spark プランを改善
- Spark ジョブ内で使用する際の Dataproc の BigQuery コネクタのパフォーマンスの向上
- Spark Execution の機能拡張:
- Spark 実行エンジンの改善
Dataproc のその他のパフォーマンスの向上: Dataproc のクラスタ キャッシュをご覧ください。これにより、Cloud Storage 内のデータへのアクセス時間を短縮できます。
Dataproc Spark のパフォーマンス向上を有効にする方法
Google Cloud コンソール、Google Cloud CLI、Dataproc API を使用して、Dataproc on Compute Engine クラスタを作成するときや、Spark ジョブをクラスタに送信するときに、Dataproc Spark パフォーマンスを向上させることができます。
Console
クラスタ作成時に機能拡張を有効にする
Dataproc クラスタを作成するときに Spark の最適化と実行の機能拡張を有効にするには、次の操作を行います。有効化された機能拡張は、ジョブの送信時に特定のジョブの機能強化を無効にしない限り、クラスタに送信されたすべての Spark ジョブで有効なままです。デフォルトでは、Dataproc Spark のパフォーマンス向上は Dataproc クラスタで無効になっています。
- Google Cloud コンソールで、Dataproc の [クラスタの作成] ページを開きます。
- [Dataproc クラスタの作成] フォームで、[Compute Engine 上のクラスタ] 行の [作成] をクリックします。
- [Compute Engine で Dataproc クラスタを作成する] ページで [クラスタのカスタマイズ] パネルをクリックし、[クラスタ プロパティ] セクションまでスクロールします。
- Spark の最適化の機能拡張を有効にするには:
- [+ プロパティを追加] をクリックします。
- [プレフィックス] リストで [spark] を選択し、[キー] フィールドに「spark.dataproc.enhanced.optimizer.enabled」、[Value] フィールドに「true」と入力します。
- Spark 実行の機能拡張を有効にするには:
- [+ プロパティを追加] をクリックします。
- [プレフィックス] リストで [spark] を選択し、[キー] フィールドに「spark.dataproc.enhanced.execution.enabled」、[Value] フィールドに「true」と入力します。
- Spark の最適化の機能拡張を有効にするには:
- クラスタ作成の他のフィールドへの入力および確認を行い、[作成] をクリックします。
ジョブ送信時の機能拡張を有効にする
Spark ジョブで Spark の最適化と実行機能拡張を有効にするには、次の手順を実行します。Dataproc Spark のパフォーマンス向上は、機能拡張をジョブクラスタの作成時に有効にしたり、特定のジョブに対して有効にしたりしない限り、デフォルトで無効になります。
- Google Cloud コンソールで、Dataproc の [ジョブ] ページを開きます。
- [ジョブ] ページで [ジョブを送信] をクリックし、ジョブの [プロパティ] セクションまでスクロールします。
- Spark の最適化の機能拡張を有効にするには:
- [+ プロパティを追加] をクリックします。 [キー] フィールドに「spark.dataproc.enhanced.optimizer.enabled」、[値] フィールドに「true」と入力します。
- Spark 実行の機能拡張を有効にするには:
- [+ プロパティを追加] をクリックします。
- [キー] フィールドに「spark.dataproc.enhanced.execution.enabled」、[値] フィールドに「true」と入力します。
- Spark の最適化の機能拡張を有効にするには:
- ジョブ送信の他のフィールドへの入力および確認を行い、[送信] をクリックします。
gcloud
クラスタ作成時に機能拡張を有効にする
Dataproc クラスタを作成するときに Spark の最適化と実行の機能拡張を有効にするには、次の操作を行います。有効化された機能拡張は、ジョブの送信時に特定のジョブの機能強化を無効にしない限り、クラスタに送信されたすべての Spark ジョブで有効なままです。デフォルトでは、Dataproc Spark のパフォーマンス向上は Dataproc クラスタで無効になっています。
ターミナル ウィンドウまたは Cloud Shell で、次の gcloud dataproc clusters create コマンドをローカルに実行します。
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT_ID \ --region=REGION \ --image-version=IMAGE \ --properties=PROPERTIES
注:
- CLUSTER_NAME: クラスタ名。プロジェクト内で一意にする必要があります。 名前は先頭を小文字にして、51 文字以下の小文字、数字、ハイフンを使用できます。末尾をハイフンにすることはできません。削除されたクラスタの名前は再使用できます。
- PROJECT_ID: クラスタに関連付けるプロジェクト。
- REGION:
クラスタが配置される Compute Engine のリージョン(
us-central1
など)。- オプションの
--zone=ZONE
フラグを追加して、指定されたリージョン内のゾーン(us-central1-a
など)を指定できます。ゾーンを指定しない場合、Dataproc の自動ゾーン プレースメント機能は、指定されたリージョンのあるゾーンを選択します。
- オプションの
- IMAGE: Dataproc Spark オプティマイザーと実行パフォーマンスの向上は、Dataproc イメージ バージョン
2.0.69+
、2.1.17+
、およびそれ以降のリリースで利用できます。このフラグを省略すると、クラスタのデフォルトの Dataproc on Compute Engine イメージの最新サブマイナー バージョンを選択します。クラスタのイメージ(デフォルトの Dataproc イメージ バージョンをご覧ください)。 PROPERTIES:
- Spark 最適化の機能拡張を有効にするには、以下を指定します。
spark:spark.dataproc.enhanced.optimizer.enabled=true
- Spark 実行の機能拡張を有効にするには、以下を指定します。
spark:spark.dataproc.enhanced.execution.enabled=true
- Spark の最適化と実行の機能拡張を有効にするには、以下を指定します。
spark:spark.dataproc.enhanced.optimizer.enabled=true,spark:spark.dataproc.enhanced.execution.enabled=true
ジョブ送信時の機能拡張を有効にする
Spark ジョブで Spark の最適化と実行機能拡張を有効にするには、次の手順を実行します。Dataproc Spark のパフォーマンス向上は、機能拡張をジョブクラスタの作成時に有効にしたり、特定のジョブに対して有効にしたりしない限り、デフォルトで無効になります。
ターミナル ウィンドウまたは Cloud Shell で、次の gcloud dataproc jobs submit コマンドをローカルに実行します。
gcloud dataproc jobs submit SPARK_JOB_TYPE \ --cluster=CLUSTER_NAME \ --region=REGION \ --properties=PROPERTIES
注:
- SPARK_JOB_TYPE:
spark
、pyspark
、spark-sql
またはspark-r
を指定します。 - CLUSTER_NAME: ジョブが実行されるジョブの名前。
- REGION: クラスタが配置されているリージョン。
PROPERTIES:
- Spark 最適化の機能拡張を有効にするには、以下を指定します。
spark.dataproc.enhanced.optimizer.enabled=true
- Spark 実行の機能拡張を有効にするには、以下を指定します。
spark.dataproc.enhanced.execution.enabled=true
- Spark の最適化と実行の機能拡張を有効にするには、以下を指定します。
spark.dataproc.enhanced.optimizer.enabled=true,spark.dataproc.enhanced.execution.enabled
- SPARK_JOB_TYPE:
API
クラスタ作成時に機能拡張を有効にする
Dataproc クラスタを作成するときに Spark の最適化と実行の機能拡張を有効にするには、次の操作を行います。有効化された機能拡張は、ジョブの送信時に特定のジョブの機能強化を無効にしない限り、クラスタに送信されたすべての Spark ジョブで有効なままです。デフォルトでは、Dataproc Spark のパフォーマンス向上は Dataproc クラスタで無効になっています。
clusters.create
リクエストの一部として、次のSoftwareConfig.properties
を指定します。- Spark 最適化の機能拡張を有効にするには、以下を指定します。
"spark:spark.dataproc.enhanced.optimizer.enabled": "true"
- Spark 実行の機能拡張を有効にするには、以下を指定します。
"spark:spark.dataproc.enhanced.execution.enabled": "true"
- Spark の最適化と実行の機能拡張を有効にするには、以下を指定します。
"spark:spark.dataproc.enhanced.optimizer.enabled": "true","spark:spark.dataproc.enhanced.execution.enabled": "true"
ジョブ送信時の機能拡張を有効にする
Spark ジョブで Spark の最適化と実行機能拡張を有効にするには、次の手順を実行します。Dataproc Spark のパフォーマンス向上は、機能拡張をジョブクラスタの作成時に有効にしたり、特定のジョブに対して有効にしたりしない限り、デフォルトで無効になります。
jobs.submit
リクエストの一部として、SparkJob、PySparkJob、SparkSqlJob または SparkRJob の次のproperties
を指定します。- Spark 最適化の機能拡張を有効にするには、以下を指定します。
"spark.dataproc.enhanced.optimizer.enabled=true"
- Spark 実行の機能拡張を有効にするには、以下を指定します。
"spark.dataproc.enhanced.execution.enabled=true"
- Spark の最適化と実行の機能拡張を有効にするには、以下を指定します。
"spark.dataproc.enhanced.execution.enabled=true,spark.dataproc.enhanced.optimizer.enabled=true"