必要に応じてリソースをスケーリングする Managed Service for Apache Spark コンピューティング インフラストラクチャでバッチ ワークロードを送信する方法について説明します。
始める前に
プロジェクトを設定し、必要に応じて Identity and Access Management ロールを付与します。
プロジェクトを設定する
必要に応じて、次のいずれか 1 つ以上の手順を行います。
- アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、 実際のシナリオでプロダクトがどのように機能するかを評価してください。 Google Cloud新規のお客様には、ワークロードの実行、テスト、デプロイに利用できる $300 分の無料クレジットも提供されます。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
必要に応じて IAM ロールを付与する
このページの例を実行するには、特定の IAM ロールが必要です。組織のポリシーによっては、これらのロールがすでに付与されている場合があります。ロールの付与を確認するには、 ロールを付与する必要がありますか?をご覧ください。
ロールの付与については、 プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
ユーザーロール
サーバーレス バッチ ワークロードを送信するために必要な権限を取得するには、次の IAM ロールを付与するように管理者に依頼してください。
- Dataproc 編集者 (
roles/dataproc.editor)プロジェクトに対する - Compute Engine のデフォルトのサービス アカウントに対する サービス アカウント ユーザー(
roles/iam.serviceAccountUser)
サービス アカウント ロール
サーバーレス バッチ ワークロードを送信するために必要な権限が Compute Engine のデフォルトのサービス アカウントに付与されるように、プロジェクトの Compute Engine のデフォルトのサービス アカウントにDataproc ワーカー (roles/dataproc.worker)IAM ロールを付与するように管理者に依頼してください。
Spark バッチ ワークロードの送信
Google Cloud コンソール、Google Cloud CLI、または REST API を使用して、 Managed Service for Apache Spark バッチ ワークロードを作成して送信できます。
コンソール
コンソールで、[Managed Service for Apache Spark バッチ] に移動します。 Google Cloud
[作成] をクリックします。
次のフィールドを選択して入力し、pi の近似値を計算する Spark バッチ ワークロードを送信します。
- バッチ情報:
- バッチ ID: バッチ ワークロードの ID を指定します。この値は 4 ~ 63 文字にする必要があります。有効な文字は
/[a-z][0-9]-/です。 - リージョン: ワークロードが実行されるリージョン を選択します。
- バッチ ID: バッチ ワークロードの ID を指定します。この値は 4 ~ 63 文字にする必要があります。有効な文字は
- コンテナ:
- バッチタイプ: Spark.
- ランタイム バージョン:
3.0ランタイム バージョンを確認または選択します。 - メインクラス:
org.apache.spark.examples.SparkPi
- jar ファイル (このファイルは Managed Service for Apache Spark 実行環境にプリインストールされています)。
file:///usr/lib/spark/examples/jars/spark-examples.jar
- 引数: 1000
- 実行構成: [サービス アカウント] を選択します。デフォルトでは、 バッチは Compute Engine のデフォルトのサービス アカウントを使用して実行されます。カスタム サービス アカウントを指定できます。 デフォルトまたはカスタムのサービス アカウントには、 Dataproc ワーカーのロールが必要です。
- ネットワーク構成: セッション リージョンでサブネットワーク を選択します。Managed Service for Apache Spark は、 プライベート Google アクセス(PGA)を 指定されたサブネットで有効にします。ネットワーク接続の要件については、 Managed Service for Apache Spark のネットワーク構成をご覧ください。
- プロパティ: サポートされている Spark プロパティの
Key(プロパティ名)とValueを入力して、Spark バッチ ワークロードに設定します。注: Managed Service for Apache Spark クラスタ プロパティとは異なり、 Managed Service for Apache Spark ワークロード プロパティにはspark:接頭辞が含まれていません。 - その他のオプション:
- 外部の セルフマネージド Hive メタストアを使用するようにバッチ ワークロードを構成できます。
- 永続履歴サーバー(PHS)を使用できます。 PHS は、バッチ ワークロードを実行するリージョンに配置する必要があります。
- バッチ情報:
[送信] をクリックして、Spark バッチ ワークロードを実行します。
gcloud
Spark バッチ ワークロードを送信して pi の近似値
を計算するには、次の gcloud CLI
gcloud dataproc batches submit spark
コマンドをターミナル ウィンドウまたは
Cloud Shellでローカルに実行します。
gcloud dataproc batches submit spark \ --region=REGION \ --version=3.0 \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --class=org.apache.spark.examples.SparkPi \ -- 1000
次のように置き換えます。
- REGION: ワークロードが実行されるリージョン を指定します。
- その他のオプション: 他のワークロード オプションと Spark プロパティを指定するための
gcloud dataproc batches submit sparkフラグを追加できます。--jars: サンプル JAR ファイルが Spark 実行環境にプリインストールされています。 SparkPi ワークロードに渡される1000コマンド引数は、円周率の見積もりロジックを 1000 回繰り返し指定します。(ワークロード入力引数は「-- 」の後に含まれます)--subnet: このフラグを追加して、セッション リージョンのサブネットの名前を指定できます。 サブネットを指定しない場合、Managed Service for Apache Spark は セッション リージョンのdefaultサブネットを選択します。Managed Service for Apache Spark は、サブネットで プライベート Google アクセス(PGA)を有効にします。ネットワーク接続の要件については、 Managed Service for Apache Spark のネットワーク構成をご覧ください。--tags: このフラグを追加して、トラフィック制御のネットワーク タグを指定できます。ネットワーク タグを使用して接続を制限します。本番環境では、Spark ワークロードによって使用される IP アドレスにファイアウォール ルールを制限することをおすすめします。--properties: このフラグを追加して、 Spark バッチ ワークロードで使用する サポートされている Spark プロパティを入力できます。--deps-bucket: このフラグを追加して、Managed Service for Apache Spark がワークロードの依存関係をアップロードする Cloud Storage バケットを 指定できます。バケットのgs://URI 接頭辞は必要ありません。バケットのパスまたはバケット名を指定できます。Managed Service for Apache Spark は、バッチ ワークロードを実行する前に、ローカル ファイルをバケット内の/dependenciesフォルダにアップロードします。注: バッチ ワークロードがローカルマシン上のファイルを参照する場合、このフラグは必須です。--ttl:--ttlフラグを追加して、バッチの有効期間の長さを指定できます。ワークロードがこの期間を超えると 、進行中の作業の終了を待たずに 無条件に終了します。期間を指定するには、s、m、h、d(秒、分、時間、日)サフィックスを使用します。最小値は 10 分(10m)、 最大値は 14 日(14d)です。- 1.1 または 2.0 ランタイム バッチ: 1.1 または 2.0 ランタイム バッチ ワークロードで
--ttlが指定されていない場合、ワークロードは自然に終了するまで実行されます(終了しない場合、永続的に実行されます)。 - 2.1 以降のランタイム バッチ: 2.1 以降のランタイム バッチ ワークロードで
--ttlが指定されていない場合、デフォルトは4hです。
- 1.1 または 2.0 ランタイム バッチ: 1.1 または 2.0 ランタイム バッチ ワークロードで
--service-account: ワークロードの実行に使用する サービス アカウント を指定できます。サービス アカウントを指定しない場合、 ワークロードは Compute Engine のデフォルトのサービス アカウントで実行されます。 サービス アカウントには、 Dataproc ワーカーのロールが必要です。- Hive メタストア: 次のコマンドは、標準の Spark 構成を使用する外部の
セルフマネージド Hive メタストア
を使用するようにバッチ ワークロードを構成します。
gcloud dataproc batches submit spark\ --properties=spark.sql.catalogImplementation=hive,spark.hive.metastore.uris=METASTORE_URI,spark.hive.metastore.warehouse.dir=WAREHOUSE_DIR> \ other args ... - 永続的履歴サーバー:
- 次のコマンドは、シングルノードの Managed Service for Apache Spark
クラスタに PHS を作成します。PHS は、バッチ ワークロードを実行するリージョンに配置する必要があり、Cloud Storage bucket-name が存在している必要があります。
gcloud dataproc clusters create PHS_CLUSTER_NAME \ --region=REGION \ --single-node \ --enable-component-gateway \ --properties=spark:spark.history.fs.logDirectory=gs://bucket-name/phs/*/spark-job-history
- 実行中の永続履歴サーバーを指定してバッチ ワークロードを送信します。
gcloud dataproc batches submit spark \ --region=REGION \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --class=org.apache.spark.examples.SparkPi \ --history-server-cluster=projects/project-id/regions/region/clusters/PHS-cluster-name \ -- 1000
- 次のコマンドは、シングルノードの Managed Service for Apache Spark
クラスタに PHS を作成します。PHS は、バッチ ワークロードを実行するリージョンに配置する必要があり、Cloud Storage bucket-name が存在している必要があります。
- ランタイム バージョン:
--versionフラグを使用して、ワークロードの Managed Service for Apache Spark ランタイム バージョンを指定します。gcloud dataproc batches submit spark \ --region=REGION \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --class=org.apache.spark.examples.SparkPi \ --version=VERSION -- 1000
API
このセクションでは、Managed Service for Apache Spark
batches.create` を使用して、pi の近似値を計算するバッチ ワークロードを作成する方法について説明します。
リクエストのデータを使用する前に、 次のように置き換えます。
- project-id: A Google Cloud プロジェクト ID。
- region: Managed Service for Apache Spark がワークロードを実行する Compute Engine リージョン 。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。 プロジェクト ID は、 コンソールの ダッシュボードの [Project info] セクションに表示されます。 Google Cloud
- REGION: セッション リージョン。
注:
HTTP メソッドと URL:
POST https://dataproc.googleapis.com/v1/projects/project-id/locations/region/batches
リクエストの本文(JSON):
{
"sparkBatch":{
"args":[
"1000"
],
"runtimeConfig": {
"version": "2.3",
},
"jarFileUris":[
"file:///usr/lib/spark/examples/jars/spark-examples.jar"
],
"mainClass":"org.apache.spark.examples.SparkPi"
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{
"name":"projects/project-id/locations/region/batches/batch-id",
"uuid":",uuid",
"createTime":"2021-07-22T17:03:46.393957Z",
"sparkBatch":{
"mainClass":"org.apache.spark.examples.SparkPi",
"args":[
"1000"
],
"jarFileUris":[
"file:///usr/lib/spark/examples/jars/spark-examples.jar"
]
},
"runtimeInfo":{
"outputUri":"gs://dataproc-.../driveroutput"
},
"state":"SUCCEEDED",
"stateTime":"2021-07-22T17:06:30.301789Z",
"creator":"account-email-address",
"runtimeConfig":{
"version":"2.3",
"properties":{
"spark:spark.executor.instances":"2",
"spark:spark.driver.cores":"2",
"spark:spark.executor.cores":"2",
"spark:spark.app.name":"projects/project-id/locations/region/batches/batch-id"
}
},
"environmentConfig":{
"peripheralsConfig":{
"sparkHistoryServerConfig":{
}
}
},
"operation":"projects/project-id/regions/region/operation-id"
}
ワークロードの費用を見積もる
Managed Service for Apache Spark ワークロードは、データ コンピューティング ユニット(DCU)とシャッフル ストレージ リソースを消費します。UsageMetrics
次のステップ
以下の内容について学習します。
- Google Cloud Data Agent Kit を使用して VS Code でデータ ワークロードのライフサイクルを管理する
- Data Agent Kit でデータ パイプラインを構築する
- BigQuery Studio ノートブックで PySpark コードを実行する
- Managed Service for Apache Spark の割り当て
- Spark プロパティ