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 を出力してワークロード リソースの消費とコストを見積もる例をご紹介しています。
次のステップ
以下の内容について学習します。