Dataproc Spark が有効になっているインスタンスを作成する
このページでは、Dataproc Spark が有効になっている Vertex AI Workbench インスタンスを作成する方法について説明します。このページでは、Dataproc JupyterLab 拡張機能の利点について説明します。また、Serverless for Apache Spark と Compute Engine の Dataproc で拡張機能を使用する方法についても説明します。
Dataproc JupyterLab 拡張機能の概要
バージョン M113
以降の Vertex AI Workbench インスタンスには、Dataproc JupyterLab 拡張機能がプリインストールされています。
Dataproc JupyterLab 拡張機能で Apache Spark ノートブック ジョブを実行する方法は 2 つあります。1 つは Dataproc クラスタを使用する方法、もう 1 つはGoogle Cloud Apache Spark 向けサーバーレスを使用する方法です。
- Dataproc クラスタには豊富な機能があり、Spark が実行されるインフラストラクチャを制御できます。Spark クラスタのサイズと構成を選択することで環境のカスタマイズと制御を行うことができます。この方法は、複雑なワークロード、長時間実行ジョブ、きめ細かいリソース管理に最適です。
- Apache Spark 向け Serverless を使用する場合、インフラストラクチャを気にする必要はありません。Spark ジョブを送信すると、Google がリソースのプロビジョニング、スケーリング、最適化をバックグラウンドで処理します。データ サイエンスや ML のワークロードでは、このサーバーレス アプローチは費用対効果の高い選択肢となります。
どちらの方法でも、Spark をデータ処理と分析に使用できます。Dataproc クラスタと Apache Spark 向けサーバーレスのどちらを選択するかは、ワークロードの要件、必要な制御レベル、リソースの使用パターンによって異なります。
データ サイエンスと ML のワークロードに Serverless for Apache Spark を使用するメリットは次のとおりです。
- クラスタ管理が不要: Spark クラスタのプロビジョニング、構成、管理について心配する必要はありません。時間とリソースを節約できます。
- 自動スケーリング: Apache Spark 用サーバーレスは、ワークロードに応じて自動的にスケールアップまたはスケールダウンを行うので、使用したリソースに対してのみ料金が発生します。
- 高パフォーマンス: Apache Spark 向け Serverless はパフォーマンスを重視して最適化され、 Google Cloudのインフラストラクチャを活用します。
- 他の Google Cloud テクノロジーとの統合: Apache Spark 用サーバーレスは、BigQuery や Dataplex Universal Catalog などの他の Google Cloud プロダクトと統合されます。
詳細については、Google Cloud Apache Spark 用サーバーレスのドキュメントをご覧ください。
始める前に
- 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.create
permission. Learn how to grant roles.
-
Enable the Cloud Resource Manager, Dataproc, and Notebooks APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. 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.create
permission. Learn how to grant roles.
-
Enable the Cloud Resource Manager, Dataproc, and Notebooks APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
プロジェクトに対する Dataproc ワーカー (
roles/dataproc.worker
) -
dataproc.clusters.use
権限のクラスタに対する Dataproc 編集者 (roles/dataproc.editor
) -
dataproc.agents.create
-
dataproc.agents.delete
-
dataproc.agents.get
-
dataproc.agents.update
-
dataproc.tasks.lease
-
dataproc.tasks.listInvalidatedLeases
-
dataproc.tasks.reportStatus
-
dataproc.clusters.use
Google Cloud コンソールで [インスタンス] ページに移動します。
[
新規作成] をクリックします。[新しいインスタンス] ダイアログで、[詳細オプション] をクリックします。
[インスタンスを作成] ダイアログの [詳細] セクションで、[Dataproc Serverless インタラクティブ セッションを有効にする] が選択されていることを確認します。
[Workbench のタイプ] が [インスタンス] に設定されていることを確認します。
[環境] セクションで、最新バージョンまたは
M113
以上のバージョン番号を使用していることを確認します。[作成] をクリックします。
Vertex AI Workbench がインスタンスを作成し、自動的に起動します。インスタンスを使用する準備が整うと、Vertex AI Workbench で [JupyterLab を開く] が有効になります。
[Settings] > [Cloud Dataproc Settings] を選択します。
[Setup Config] タブの [Project Info] で、[Project ID] と [Region] を変更して、[Save] をクリックします。
これらの変更は、JupyterLab を再起動するまで有効になりません。
JupyterLab を再起動するには、[File] > [Shut Down] を選択して、Vertex AI Workbench の [インスタンス] ページで [JupyterLab を開く] をクリックします。
DNS エントリが正しく構成されている。
同じプロジェクトで使用可能なクラスタがある(存在しない場合は作成する必要があります)。
クラスタで コンポーネント ゲートウェイとオプションの Jupyter コンポーネントの両方が有効になっている。
Dataproc JupyterLab 拡張機能の詳細については、JupyterLab 拡張機能を使用してサーバーレス Spark ワークロードを開発するをご覧ください。
Apache Spark 用サーバーレスの詳細を確認する。Apache Spark 用サーバーレスのドキュメントをご覧ください。
クラスタのプロビジョニングと管理を行うことなく Apache Spark 向け Serverless ワークロードを実行する方法を確認する。
Google Cloud プロダクトとサービスで Spark を使用する方法を確認する。 Google Cloudでの Spark をご覧ください。
GitHub の
serverless-spark-workshop
でサーバーレス Spark について確認する。
必要なロール
Serverless for Apache Spark クラスタまたは Dataproc クラスタでノートブック ファイルを実行するために必要な権限がサービス アカウントに付与されるように、サービス アカウントに次の IAM ロールを付与するように管理者に依頼してください。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、Apache Spark 用 Serverless クラスタまたは Dataproc クラスタでノートブック ファイルを実行するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
Serverless for Apache Spark クラスタまたは Dataproc クラスタでノートブック ファイルを実行するには、次の権限が必要です。
管理者は、サービス アカウントに、カスタムロールや他の事前定義ロールを付与することもできます。
Dataproc を有効にしてインスタンスを作成する
Dataproc を有効にして Vertex AI Workbench インスタンスを作成するには、次の操作を行います。
JupyterLab を開く
インスタンス名の横にある [JupyterLab を開く] をクリックします。
ブラウザで JupyterLab の [Launcher] タブが開きます。デフォルトでは、[Serverless for Apache Spark Notebooks] と [Dataproc Jobs and Sessions] のセクションが表示されます。選択したプロジェクトとリージョンに Jupyter 対応クラスタがある場合は、[Dataproc Cluster Notebooks] というセクションが表示されます。
Apache Spark 用 Serverless で拡張機能を使用する
Vertex AI Workbench インスタンスと同じリージョンおよびプロジェクトにある Apache Spark 用サーバーレス ランタイム テンプレートが、JupyterLab の [Launcher] タブの [Serverless for Apache Spark Notebooks] セクションに表示されます。
ランタイム テンプレートを作成するには、Apache Spark 用 Serverless ランタイム テンプレートを作成するをご覧ください。
新しいサーバーレス Spark ノートブックを開くには、ランタイム テンプレートをクリックします。リモート Spark カーネルが起動するまでに 1 分ほどかかります。カーネルが起動したら、コーディングを開始できます。
Compute Engine 上の Dataproc で拡張機能を使用する
Compute Engine に Dataproc Jupyter クラスタを作成した場合、[Launcher] タブに [Dataproc Cluster Notebooks] セクションが表示されます。
そのリージョンとプロジェクトでアクセス可能な Jupyter 対応 Dataproc クラスタごとに、4 つのカードが表示されます。
リージョンとプロジェクトを変更するには、次の操作を行います。
新しいノートブックを作成するには、カードをクリックします。Dataproc クラスタのリモート カーネルが起動したら、コードの記述を開始し、作成したコードをクラスタで実行できます。
gcloud CLI と API を使用してインスタンスで Dataproc を管理する
このセクションでは、Vertex AI Workbench インスタンスで Dataproc を管理する方法について説明します。
Dataproc クラスタのリージョンを変更する
Vertex AI Workbench インスタンスのデフォルト カーネル(Python や TensorFlow など)は、インスタンスの VM で実行されるローカル カーネルです。Dataproc Spark が有効になっている Vertex AI Workbench インスタンスでは、ノートブックはリモート カーネルを介して Dataproc クラスタで実行されます。リモート カーネルはインスタンスの VM 外のサービスで実行されるため、同じプロジェクト内の任意の Dataproc クラスタにアクセスできます。
デフォルトでは、Vertex AI Workbench はインスタンスと同じリージョン内の Dataproc クラスタを使用しますが、Dataproc クラスタでコンポーネント ゲートウェイとオプションの Jupyter コンポーネントが有効になっている限り、Dataproc リージョンを変更できます。
テストアクセス
Dataproc JupyterLab 拡張機能は、Vertex AI Workbench インスタンスでデフォルトで有効になっています。Dataproc へのアクセスをテストするには、次の curl リクエストを kernels.googleusercontent.com
ドメインに送信して、インスタンスのリモート カーネルへのアクセスを確認します。
curl --verbose -H "Authorization: Bearer $(gcloud auth print-access-token)" https://PROJECT_ID-dot-REGION.kernels.googleusercontent.com/api/kernelspecs | jq .
curl コマンドが失敗した場合は、次のことを確認します。
Dataproc を無効にする
Vertex AI Workbench インスタンスは、デフォルトで Dataproc を有効にして作成されます。disable-mixer
metadata
キーを true
に設定すると、Dataproc を無効にして Vertex AI Workbench インスタンスを作成できます。
gcloud workbench instances create INSTANCE_NAME --metadata=disable-mixer=true
Dataproc を有効にする
メタデータ値を更新することで、停止した Vertex AI Workbench インスタンスで Dataproc を有効にできます。
gcloud workbench instances update INSTANCE_NAME --metadata=disable-mixer=false
Terraform を使用して Dataproc を管理する
Terraform では Vertex AI Workbench インスタンスの Dataproc は、メタデータ フィールドの disable-mixer
キーを使用して管理されます。disable-mixer
metadata
キーを false
に設定して、Dataproc を有効にします。disable-mixer
メタデータキーを true
に設定して、Dataproc を無効にします。
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
トラブルシューティング
Dataproc Spark が有効なインスタンスの作成に関連する問題を診断して解決するには、Vertex AI Workbench のトラブルシューティングをご覧ください。