このドキュメントでは、ローカルマシンや Compute Engine VM インスタンスなど、Google サービスにアクセスできるマシンまたは VM に Dataproc JupyterLab プラグインをインストールして使用する方法について説明します。また、Spark ノートブック コードの開発とdeployの方法についても説明します。
Dataproc JupyterLab プラグインをインストールすると、次のタスクを行うことができます。
- Dataproc Serverless for Spark インタラクティブ ノートブック セッションを起動する
- Dataproc Serverless のバッチジョブを送信する
Dataproc Serverless の制限と考慮事項
- Spark ジョブは、送信ユーザーの ID ではなく、サービス アカウント ID で実行されます。
始める前に
- 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.
-
Enable the Dataproc API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Dataproc API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Dataproc Serverless インタラクティブ セッションを実行するリージョン VPC サブネットで、限定公開の Google アクセスが有効になっていることを確認します。詳細については、Dataproc サーバーレス ランタイム テンプレートを作成するをご覧ください。
Dataproc JupyterLab プラグインをインストールする
ローカルマシンや Compute Engine VM インスタンスなど、Google サービスにアクセスできるマシンまたは VM に Dataproc JupyterLab プラグインをインストールして使用できます。
プラグインをインストールする手順は次のとおりです。
python.org/downloads
から Python バージョン 3.8 以降をダウンロードしてインストールします。Python 3.8 以降のインストールを確認します。
python3 --version
マシンに
JupyterLab 3.6.3+
をインストールします。pip3 install --upgrade jupyterlab
JupyterLab 3.6.3 以降のインストールを確認します。
pip3 show jupyterlab ```
Dataproc JupyterLab プラグインをインストールします。
pip3 install dataproc-jupyter-plugin
JupyterLab のバージョンが
4.0.0
より前の場合は、プラグイン拡張機能を有効にします。jupyter server extension enable dataproc_jupyter_plugin ```
-
jupyter lab
ブラウザで JupyterLab の [Launcher] ページが開きます。これには、[Dataproc Jobs and Sessions] セクションが含まれています。また、次のものが含まれる場合もあります:プロジェクトでJupyter のオプション コンポーネントを実行している Dataproc サーバーレス ノートブックまたは Dataproc クラスタにアクセスできる場合は、Dataproc サーバーレス ノートブックおよび Dataproc クラスタ ノートブックのセクションを含めることもできます。
デフォルトでは、Dataproc Serverless for Spark Interactive セッションは、始める前にで
gcloud init
を実行したときに設定したプロジェクトとリージョンで実行されます。セッションのプロジェクトとリージョンの設定は、JupyterLab の [設定] > [Dataproc 設定] ページで変更できます。
Dataproc Serverless ランタイム テンプレートを作成する
Dataproc Serverless ランタイム テンプレート(session
テンプレートとも呼ばれます)には、セッションで Spark コードを実行するための構成設定が含まれています。ランタイム テンプレートの作成と管理は、Jupyterlab または gcloud CLI を使用して行うことができます。
JupyterLab
JupyterLab の [ランチャー] ページの [Dataproc Serverless ノートブック] セクションで
New runtime template
カードをクリックします。ランタイム テンプレート フォームに入力します。
[表示名] と [説明] を指定し、他の設定を入力または確認します。
注:
ネットワーク構成: サブネットワークで限定公開の Google アクセスを有効にし、すべてのポートでサブネットの通信を許可する必要があります(Dataproc Serverless for Spark のネットワーク構成を参照してください)。
始める前にで
gcloud init
を実行したときに構成したリージョンのdefault
ネットワークのサブネットが、限定公開の Google アクセスに対して有効になっていない場合:- 限定公開の Google アクセスに対して有効にするか、
- 限定公開の Google アクセスが有効になっているリージョン サブネットワークを持つ別のネットワークを選択します。Dataproc Serverless が使用するリージョンは、JupyterLab の [設定] > [Dataproc 設定] ページで変更できます。
Metastore: セッションで Dataproc Metastore サービスを使用するには、メタストアのプロジェクト ID、リージョン、サービスを選択します。
最大アイドル時間: セッションが終了するまでのノートブックの最大アイドル時間。指定できる範囲: 10 分~336 時間(14 日)。
最大セッション時間: セッションが終了するまでのセッションの最大存続時間。指定できる範囲: 10 分~336 時間(14 日)。
PHS: 使用可能な Persistent Spark History Server を選択して、セッション中とセッション後にセッションログにアクセスできるようにします。
Spark プロパティ: サーバーレス Spark セッションに設定するプロパティごとに [プロパティを追加] をクリックします。Spark ランタイム、リソース、自動スケーリングのプロパティなど、サポートされている Spark プロパティとサポートされていない Spark プロパティのリストについては、Spark プロパティをご覧ください。
ラベル: サーバーレス Spark セッションに設定する各ラベルの [ラベルを追加] をクリックします。
[設定 > Dataproc の設定] ページでランタイム テンプレートを表示します。
- テンプレートを削除するには、テンプレートの [操作] メニューを使用します。
[保存] をクリックします。
JupyterLab の [ランチャー] ページを開いて再読み込みし、JupyterLab の [ランチャー] ページに保存したノートブック テンプレート カードを表示します。
gcloud
ランタイム テンプレート構成を含む YAML ファイルを作成します。
単純な YAML
environmentConfig: executionConfig: networkUri: default jupyterSession: kernel: PYTHON displayName: Team A labels: purpose: testing description: Team A Development Environment
複雑な YAML
environmentConfig: executionConfig: serviceAccount: sa1 # Choose either networkUri or subnetworkUri networkUri: default subnetworkUri: subnet networkTags: - tag1 kmsKey: key1 idleTtl: 3600s ttl: 14400s stagingBucket: staging-bucket peripheralsConfig: metastoreService: projects/my-project-id/locations/us-central1/services/my-metastore-id sparkHistoryServerConfig: dataprocCluster: projects/my-project-id/regions/us-central1/clusters/my-cluster-id jupyterSession: kernel: PYTHON displayName: Team A labels: purpose: testing runtimeConfig: version: "1.1" containerImage: gcr.io/my-project-id/my-image:1.0.1 properties: "p1": "v1" description: Team A Development Environment
始める前にで
gcloud init
を実行したときに構成したリージョンのdefault
ネットワークのサブネットが、限定公開の Google アクセスに対して有効になっていない場合:- 限定公開の Google アクセスに対して有効にするか、
- 限定公開の Google アクセスが有効になっているリージョン サブネットワークを持つ別のネットワークを選択します。Dataproc Serverless が使用するリージョンは、JupyterLab の [設定] > [Dataproc 設定] ページで変更できます。
次の gcloud beta dataproc session-templates import コマンドをローカル、または Cloud Shell で実行して、YAML ファイルからセッション(ランタイム)テンプレートを作成します。
gcloud beta dataproc session-templates import TEMPLATE_ID \ --source=YAML_FILE \ --project=PROJECT_ID \ --location=REGION
- セッション テンプレートを記述、一覧表示、エクスポート、削除するコマンドについては、gcloud beta dataproc session-templates をご覧ください。
ノートブックを起動して管理する
Dataproc JupyterLab プラグインをインストールした後、JupyterLab の [ランチャー] ページでテンプレート カードをクリックして、次の操作を行うことができます。
Dataproc Serverless で Jupyter ノートブックを起動する
JupyterLab ランチャー ページの [Dataproc Serverless Notebooks] セクションには、Dataproc Serverless ランタイム テンプレートにマッピングされるノートブック テンプレート カードが表示されます(Dataproc Serverless ランタイム テンプレートを作成するを参照してください)。
カードをクリックして Dataproc Serverless セッションを作成し、ノートブックを起動します。セッションの作成が完了し、ノートブック カーネルが使用可能になると、カーネルのステータスは
Unknown
からIdle
に変わります。ノートブックのコードを記述してテストします。
次の PySpark
Pi estimation
コードをコピーして PySpark ノートブック セルに貼り付け、Shift+Return キーを押してコードを実行します。import random def inside(p): x, y = random.random(), random.random() return x*x + y*y < 1 count = sc.parallelize(range(0, 10000)) .filter(inside).count() print("Pi is roughly %f" % (4.0 * count / 10000))
ノートブックの結果:
ノートブックを作成して使用した後、[Kernel] タブで [Shut down Kernel] をクリックすると、ノートブック セッションを終了できます。
- セッションを終了しない場合、セッションのアイドル タイマーが期限切れになると、Dataproc によってセッションが終了します。セッションのアイドル時間を設定するには、ランタイム テンプレートの構成を使用します。デフォルトのセッション アイドル時間は 1 時間です。
Dataproc on Compute Engine クラスタ でノートブックを起動する
Dataproc on Compute Engine Jupyter クラスタを作成した場合は、JupyterLab の [ランチャー] ページには、事前にインストールしたカーネル カードが表示された [Dataproc クラスタ ノートブック] セクションがあります。
Dataproc on Compute Engine クラスタ で Jupyter ノートブックを起動するには:
[Dataproc クラスタ ノートブック] セクションでカードをクリックします。
カーネルのステータスが
Unknown
からIdle
に変わったら、ノートブック コードの作成と実行を開始できます。ノートブックを作成して使用した後、[Kernel] タブで [Shut down Kernel] をクリックすると、ノートブック セッションを終了できます。
Cloud Storage で入出力ファイルを管理する
探索的データの分析と ML モデルの構築には、多くの場合、ファイルベースの入力と出力が含まれます。Dataproc Serverless は Cloud Storage 上のこれらのファイルにアクセスします。
Cloud Storage ブラウザにアクセスするには、JupyterLab の [ランチャー] ページのサイドバーで Cloud Storage ブラウザ アイコンをクリックし、フォルダをダブルクリックして内容を表示します。
Jupyter でサポートされているファイル形式をクリックして開き、編集できます。ファイルへの変更を保存すると、Cloud Storage に書き込まれます。
新しい Cloud Storage フォルダを作成するには、新しいフォルダ アイコンをクリックして、フォルダの名前を入力します。
Cloud Storage バケットまたはフォルダにファイルをアップロードするには、アップロード アイコンをクリックして、アップロードするファイルを選択します。
Spark ノートブック コードを開発する
Dataproc JupyterLab プラグインをインストールした後、JupyterLab の [ランチャー] ページから Jupyter ノートブックを起動してアプリケーション コードを開発できます。
PySpark と Python のコード開発
Dataproc Serverless と Dataproc on Compute Engine のクラスタは、PySpark カーネルをサポートしています。Dataproc on Compute Engine は Python カーネルもサポートしています。
JupyterLab ランチャー ページの [Dataproc Serverless ノートブック] セクションまたは [Dataproc クラスタ ノートブック] セクションの PySpark カードをクリックして、PySpark ノートブックを開きます。
JupyterLab の [ランチャー] ページの [Dataproc クラスタ ノートブック] セクションで Python カーネルカードをクリックして、Python ノートブックを開きます。
SQL のコード開発
PySpark ノートブックを開いて SQL コードを記述して実行するには、JupyterLab の [ランチャー] ページの [Dataproc Serverless ノートブック] セクションまたは [Dataproc クラスタ ノートブック] セクションで PySpark カーネルカードをクリックします。
Spark SQL マジック: Dataproc Serverless ノートブックを起動する PySpark カーネルは、Spark SQL マジックがプリロードされています。SQL ステートメントでラップするには、spark.sql('SQL STATEMENT').show()
を使用する代わりに、セルの先頭に「%%sparksql magic
」と入力し、セルにSQL ステートメントを入力します。
BigQuery SQL: BigQuery Spark コネクタを使用すると、ノートブック コードで BigQuery テーブルからデータを読み込み、Spark で分析を実行して、結果を BigQuery テーブルに書き込むことができます。
Dataproc Serverless 2.1 ランタイムには、BigQuery Spark コネクタが含まれています。Dataproc Serverless 2.0 以前のランタイムを使用して、Dataproc Serverless ノートブックを起動する場合は、次の Spark プロパティをDataproc Serverless ランタイム テンプレートに追加して Spark BigQuery コネクタをインストールできます。
spark.jars: gs://spark-lib/bigquery/spark-bigquery-with-dependencies_2.12-0.25.2.jar
Scala のコード開発
イメージ バージョン 2.0 以降、2.1 以降で作成された Dataproc on Compute Engine クラスタには、Apache Toree(Spark へのインタラクティブなアクセスを可能にする Jupyter ノートブック プラットフォーム用の Scala カーネル)が含まれています。
JupyterLab の [ランチャー] ページの [Dataproc クラスタ ノートブック] セクションの Apache Toree カードをクリックして、Scala コード開発用のノートブックを開きます。
図 1. JupyterLab ランチャー ページの Apache Toree カーネルカード。
メタデータ エクスプローラ
Dataproc Metastore(DPMS)インスタンスがDataproc Serverless ランタイム テンプレートまたは、Compute Engine クラスタの Dataproc に接続されている場合、ノートブックを開くと、DPMS インスタンス スキーマが JupyterLab メタデータ エクスプローラに表示されます。DPMS は、Google Cloud 上のフルマネージドで水平方向にスケーラブルな Hive Metastore(HMS)サービスです。
メタデータ エクスプローラで HMS メタデータを表示するには、以下の手順に従ってください。
プロジェクトで Data Catalog API を有効にする。
DPMS サービスで Data Catalog の同期を有効にする。
Dataproc Serverless ランタイム テンプレートを作成するか、Compute Engine クラスタで Dataproc を作成するときに、DPMS インスタンスを指定します。
JupyterLab メタデータ エクスプローラを開くには、サイドバーのアイコンをクリックします。
データベース、テーブル、列は、Metadata Explorer で検索できます。データベース、テーブル、列の名前をクリックして、関連するメタデータを表示します。
コードをデプロイする
Dataproc JupyterLab プラグインをインストールした後、JupyterLab を使用して次のことができます。
Dataproc Serverless インフラストラクチャでノートブック コードを実行する
Dataproc Serverless インフラストラクチャまたは Dataproc on Compute Engine クラスタにバッチジョブを送信します。
Dataproc Serverless でノートブック コードを実行する
ノートブック セルでコードを実行するには、[実行] をクリックするか、Shift-Return キーを押します。
1 つ以上のノートブック セルでコードを実行するには、[実行] メニューを使用します。
Dataproc Serverless にバッチジョブを送信する
JupyterLab の [ランチャー] ページの [Dataproc のジョブとセッション] セクションにある [サーバーレス] カードをクリックします。
[バッチ] タブをクリックし、[バッチを作成] をクリックして [バッチ情報] フィールドに入力します。
[送信] をクリックしてジョブを送信します。
Dataproc on Compute Engine クラスタにバッチジョブを送信する
JupyterLab の [ランチャー] ページの [Dataproc のジョブとセッション] セクションで [クラスタ] カードをクリックします。
[ジョブ] タブをクリックし、[ジョブを送信] をクリックします。
[クラスタ] を選択し、[ジョブ] フィールドに入力します。
[送信] をクリックしてジョブを送信します。
リソースを表示して管理する
Dataproc JupyterLab プラグインをインストールしたら、JupyterLab の [ランチャー] ページの [Dataproc のジョブとセッション] セクションで Dataproc Serverless と Dataproc on Compute Engine を表示して管理できます。
[Dataproc のジョブとセッション] セクションをクリックして、[クラスタ] カードと [サーバーレス] カードを表示します。
Dataproc Serverless セッションを表示して管理するには:
- [Serverless] カードをクリックします。
- [セッション] タブをクリックしてから、セッション ID をクリックして [セッションの詳細] ページを開き、セッション プロパティを表示し、ログ エクスプローラで Google Cloud のログを表示して、セッションを終了します。注: 各 Dataproc Serverless ノートブックを起動するための一意の Dataproc Serverless セッションが作成されます。
Dataproc Serverless バッチを表示して管理するには:
- [バッチ] タブをクリックすると、現在のプロジェクトとリージョンの Dataproc Serverless バッチのリストが表示されます。バッチ ID をクリックして、バッチの詳細を表示します。
Dataproc on Compute Engine クラスタを表示して管理するには:
- [クラスタ] カードをクリックします。[クラスタ] タブが選択され、現在のプロジェクトとリージョン内のアクティブな Dataproc on Compute Engine クラスタが一覧表示されます。[アクション] 列のアイコンをクリックして、クラスタを起動、停止、再起動できます。クラスタ名をクリックして、クラスタの詳細を表示します。[アクション] 列のアイコンをクリックして、ジョブのクローン作成、停止、削除を行えます。
Dataproc on Compute Engine ジョブを表示して管理するには:
- [ジョブ] カードをクリックして、現在のプロジェクトに存在するジョブのリストを表示します。ジョブの詳細を表示するには、ジョブ ID をクリックします。