Serverless for Apache Spark を使用して、必要に応じてリソースをスケールする Dataproc マネージド コンピューティング インフラストラクチャのバッチ ワークロードを送信する方法を学習します。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
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
(
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 Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. 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
(
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 Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. Google Cloud コンソールで、Dataproc バッチに移動します。
[作成] をクリックします。
次のフィールドを選択して入力し、pi の近似値を計算する Spark バッチ ワークロードを送信します。
- バッチ情報:
- バッチ ID: バッチ ワークロードの ID を指定します。この値は 4 ~ 63 文字にする必要があります。有効な文字は
/[a-z][0-9]-/です。 - リージョン: ワークロードが実行されるリージョンを選択します。
- バッチ ID: バッチ ワークロードの ID を指定します。この値は 4 ~ 63 文字にする必要があります。有効な文字は
- コンテナ:
- バッチタイプ: Spark。
- ランタイム バージョン: デフォルトのランタイム バージョンが選択されています。必要に応じて、デフォルト以外の Apache Spark 向けサーバーレス ランタイム バージョンを指定できます。
- メインクラス:
org.apache.spark.examples.SparkPi
- jar ファイル(このファイルは、Apache Spark 用 Serverless の Spark 実行環境にプリインストールされています)。
file:///usr/lib/spark/examples/jars/spark-examples.jar
- 引数: 1000。
- 実行構成: ワークロードの実行に使用するサービス アカウントを指定できます。サービス アカウントを指定しない場合、ワークロードは Compute Engine のデフォルトのサービス アカウントで実行されます。サービス アカウントには、Dataproc ワーカー ロールが必要です。
- ネットワーク構成: セッション リージョンでサブネットワークを選択します。Apache Spark 用サーバーレスは、指定されたサブネットでプライベート Google アクセス(PGA)を有効にします。ネットワーク接続の要件については、Google Cloud Apache Spark 用サーバーレスのネットワーク構成をご覧ください。
- プロパティ: Spark バッチ ワークロードで設定するサポートされている Spark プロパティの
Key(プロパティ名)とValueを入力します。注: Compute Engine の クラスタ プロパティの Dataproc とは異なり、Apache Spark 用サーバーレスのワークロード プロパティにspark:接頭辞が含まれていません。 - その他のオプション:
- 外部のセルフマネージド Hive メタストアを使用するようにバッチ ワークロードを構成できます。
- 永続履歴サーバー(PHS)を使用できます。PHS は、バッチ ワークロードを実行するリージョンに配置する必要があります。
- バッチ情報:
[送信] をクリックして、Spark バッチ ワークロードを実行します。
- REGION: ワークロードが実行されるリージョンを指定します。
- その他のオプション:
gcloud dataproc batches submit sparkフラグを追加して、他のワークロード オプションと Spark プロパティを指定できます。--version: Apache Spark 用サーバーレスのデフォルト以外のランタイム バージョンを指定できます。--jars: サンプル JAR ファイルが Spark 実行環境にプリインストールされています。SparkPi ワークロードに渡される1000コマンド引数は、円周率の見積もりロジックを 1,000 回繰り返し指定します。(ワークロード入力引数は「--」の後に含まれます)--subnet: このフラグを追加して、セッション リージョンのサブネットの名前を指定できます。サブネットを指定しない場合、Apache Spark 向け Serverless はセッション リージョンのdefaultサブネットを選択します。Apache Spark 用サーバーレスは、サブネットでプライベート Google アクセス(PGA)を有効にします。ネットワーク接続の要件については、Google Cloud Apache Spark 用サーバーレスのネットワーク構成をご覧ください。--properties: このフラグを追加して、Spark バッチ ワークロードで使用するサポートされている Spark プロパティを入力できます。--deps-bucket: このフラグを追加して、Apache Spark 用サーバーレスがワークロードの依存関係をアップロードする Cloud Storage バケットを指定できます。バケットのgs://URI 接頭辞は必要ありません。バケットのパスまたはバケット名を指定できます。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 ... - 永続的履歴サーバー:
- 次のコマンドは、単一ノードの Dataproc クラスタに 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
- 次のコマンドは、単一ノードの Dataproc クラスタに PHS を作成します。PHS は、バッチ ワークロードを実行するリージョンに配置する必要があり、Cloud Storage bucket-name が存在している必要があります。
- ランタイム バージョン:
--versionフラグを使用して、ワークロードの Serverless 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
- project-id: Google Cloud プロジェクト ID。
- region: Google Cloud Apache Spark 向け Serverless がワークロードを実行する Compute Engine リージョン。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。 プロジェクト ID は、 Google Cloud コンソールのダッシュボードの [プロジェクト情報] セクションに表示されます。
- REGION: セッション リージョン。
Spark バッチ ワークロードの送信
Google Cloud コンソール、Google Cloud CLI、または Apache Spark 用 Serverless API を使用して、Apache Spark 用 Serverless バッチ ワークロードを作成して送信できます。
コンソール
gcloud
Spark バッチ ワークロードを送信して pi の近似値を計算するには、次の gcloud CLI の gcloud dataproc batches submit spark コマンドをターミナル ウィンドウまたは Cloud Shell でローカルに実行します。
gcloud dataproc batches submit spark \ --region=REGION \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --class=org.apache.spark.examples.SparkPi \ -- 1000
次のように置き換えます。
API
このセクションでは、Apache Spark 用 Serverless の batches.create を使用して、pi の近似値を計算するバッチ ワークロードを作成する方法について説明します。
リクエストのデータを使用する前に、次のように置き換えます。
注:
HTTP メソッドと URL:
POST https://dataproc.googleapis.com/v1/projects/project-id/locations/region/batches
リクエストの本文(JSON):
{
"sparkBatch":{
"args":[
"1000"
],
"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"
}
ワークロードの費用を見積もる
Apache Spark ワークロード用のサーバーレスは、データ コンピューティング ユニット(DCU)とシャッフル ストレージ リソースを消費します。Apache Spark 用サーバーレスの料金で、Dataproc の UsageMetrics を出力してワークロード リソースの消費とコストを見積もる例をご紹介しています。
次のステップ
以下の内容について学習します。