Dataproc Hub の構成

Dataproc Hub はカスタマイズされた JupyterHub サーバーです。 管理者は、Jupyter および JupyterLab ノートブック環境をホストするために、シングル ユーザー の Managed Service for Apache Spark クラスタを生成できる Dataproc Hub インスタンスを構成し、作成します(Dataproc Hub の使用を参照)。

複数のユーザーがノートブックを起動します。Managed Service for Apache Spark が有効になっている Vertex AI Workbench インスタンス を作成するか、VM にManaged Service for Apache Spark JupyterLab プラグイン をインストールして、複数のユーザーにノートブックを提供できます。

目標

  1. Managed Service for Apache Spark クラスタ構成を定義する(または、事前定義された構成ファイルのいずれかを使用する)。

  2. Dataproc Hub インスタンスの環境変数を設定する。

  3. Dataproc Hub インスタンスを作成する

始める前に

Google Cloud プロジェクトと Cloud Storage バケットをまだ作成していない場合は、作成します。

  1. プロジェクトを設定する

    1. アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、 実際のシナリオでプロダクトがどのように機能するかを評価してください。 Google Cloud新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
    2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

      Go to project selector

    3. Verify that billing is enabled for your Google Cloud project.

    4. Enable the Dataproc, Compute Engine, and Cloud Storage APIs.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the APIs

    5. Google Cloud CLI をインストールします。

    6. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

    7. gcloud CLI を初期化するには、次のコマンドを実行します:

      gcloud init
    8. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

      Go to project selector

    9. Verify that billing is enabled for your Google Cloud project.

    10. Enable the Dataproc, Compute Engine, and Cloud Storage APIs.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the APIs

    11. Google Cloud CLI をインストールします。

    12. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

    13. gcloud CLI を初期化するには、次のコマンドを実行します:

      gcloud init

  2. プロジェクトに Cloud Storage バケット を作成 して、このチュートリアルで使用するデータを保持します。

    1. コンソールで Cloud Storage の Google Cloud [バケット] ページに移動します。

      [バケット] に移動

    2. [ [Create]] をクリックします。
    3. [バケットの作成] ページでユーザーのバケット情報を入力します。次のステップに進むには、[続行] をクリックします。
      1. [スタートガイド] セクションで、次の操作を行います。
      2. [データの保存場所の選択] セクションで、次の操作を行います。
        1. ロケーション タイプを選択してください。
        2. [Location type] プルダウン メニューから、バケットのデータが永続的に保存されるロケーションを選択します。
        3. クロスバケット レプリケーションを設定するには、 [Storage Transfer Service 経由でクロスバケット レプリケーションを追加する] を選択し、 次の手順を実施します:

          クロスバケット レプリケーションを設定する

          1. [バケット] メニューで、バケットを選択します。
          2. [レプリケーション設定] セクションで、[構成] をクリックして、レプリケーション ジョブの設定を構成します。

            [**クロスバケット レプリケーションを構成する**] ペインが表示されます。

            • オブジェクト名の接頭辞で複製するオブジェクトをフィルタするには、 オブジェクトを追加または除外する接頭辞を入力し、 [接頭辞を追加] をクリックします。
            • 複製されたオブジェクトのストレージ クラスを設定するには、 [Storage class] メニューからストレージ クラスを選択します。 この手順をスキップすると、複製されたオブジェクトはデフォルトで宛先バケットのストレージ クラスを使用します。
            • [完了] をクリックします。
      3. [データの保存場所の選択] セクションで、次の操作を行います。
        1. バケットのデフォルトのストレージ クラスを選択するか、バケットデータのストレージ クラスを自動的に管理するAutoclassを選択します。
        2. 階層名前空間を有効にするには、 [データ量が多いワークロード向けにストレージを最適化] セクションで、 [このバケットで階層的な名前空間を有効にする] を選択します。
      4. In the [オブジェクトへのアクセスを制御する方法を選択する] セクションで、バケットに 公開アクセスの防止 を適用するかどうかを選択し、バケットのオブジェクトに使用する アクセス制御方法 を選択します。
      5. [オブジェクト データを保護する方法を選択する] セクションで、次の操作を行います。
        • [**データ保護**] で、バケットに設定するオプションを選択します。
          • 削除(復元可能)を有効にするには、 [削除(復元可能)ポリシー(データ復旧用)] チェックボックスをオンにして、 削除後にオブジェクトを保持する日数を指定します。
          • オブジェクトのバージョニングを設定するには、 [オブジェクトのバージョニング(バージョン管理用)] チェックボックスをオンにして、 オブジェクトごとの最大バージョン数と、非現行バージョンが期限切れになるまでの日数を指定します。
          • オブジェクトとバケットの保持ポリシーを有効にするには、[保持(コンプライアンス用)] チェックボックスをオンにして、次の操作を行います。
            • [オブジェクト保持ロック]を有効にするには、 [オブジェクト保持を有効にする]チェックボックスをオンにします。
            • [Bucket Lock] を有効にするには、[バケット保持ポリシーを設定する] チェックボックスをオンにして、保持期間の単位と保持期間を選択します。
        • オブジェクト データの暗号化方法を選択するには、 [データ暗号化] セクションを開き()、 [データ暗号化] 方法を選択します
    4. [作成] をクリックします。

クラスタ構成を定義する

Dataproc Hub インスタンスは、YAML クラスタ構成ファイルに含まれる設定値からクラスタを作成します。

クラスタ構成では、Managed Service for Apache Spark クラスタで使用できる任意の機能やコンポーネント(マシンタイプ、初期化アクション、オプション コンポーネントなど)を指定できます。クラスタ イメージ バージョンは 1.4.13 以降の必要があります。1.4.13 未満のイメージ バージョンでクラスタを生成しようとすると、エラーが発生し、失敗します。

YAML クラスタ構成ファイルの例

clusterName: cluster-name
config:
  softwareConfig:
    imageVersion: 2.2-ubuntu22
    optionalComponents:
    - JUPYTER

各構成は Cloud Storage に保存される必要があります。 複数の構成ファイルを作成して保存すると、 ユーザーが Dataproc Hub を使用して Managed Service for Apache Spark クラスタのノートブック環境を作成する際に選択肢を提供できます。

YAML クラスタ構成ファイルを作成する方法は 2 つあります。:

  1. YAML クラスタ構成ファイルをコンソールから作成する

  2. 既存のクラスタから YAML クラスタ構成ファイルをエクスポートする

YAML クラスタ構成ファイルをコンソールから作成する

  1. Google Cloud コンソールで [クラスタの作成] ページを開き、各フィールドを選択して入力し、Dataproc Hub がユーザーのために生成するクラスタのタイプを指定します。
    1. 左側のパネルの下部にある [同等の REST] を選択します。
    2. 生成された JSON ブロック(先頭の POST リクエスト行を除く)をコピーし、オンラインの JSON to YAML 変換ツールに貼り付けます(オンラインで「Convert JSON to YAML」を検索)。
    3. 変換された YAML をローカルの cluster-config-filename.yaml ファイルにコピーします。

既存のクラスタから YAML クラスタ構成ファイルをエクスポートする

  1. 要件に合わせてクラスタを作成します。
  2. クラスタ構成をローカルの cluster-config-filename.yaml ファイルにエクスポートします。
    gcloud dataproc clusters export cluster-name \
        --destination cluster-config-filename.yaml  \
        --region region
     

YAML 構成ファイルを Cloud Storage に保存する

ローカルの YAML クラスタ構成ファイルを Cloud Storage バケットにコピーします。

gcloud storage cp cluster-config-filename.yaml gs://bucket-name/

Dataproc Hub インスタンスの環境変数を設定する

管理者は、次の表に示すハブ環境変数を設定して、ハブユーザーによって生成される Managed Service for Apache Spark クラスタの属性を設定できます。

DATAPROC_CONFIGS
変数 説明
NOTEBOOKS_LOCATION ユーザーのノートブックを含む Cloud Storage バケットまたはバケット フォルダ。「gs://」接頭辞は省略可能です。デフォルト: Managed Service for Apache Spark ステージング バケット gs://bucket-name/
DATAPROC_CONFIGS YAML クラスタ構成ファイルにアクセスするための、Cloud Storage パスの文字列のカンマ区切りリスト。「gs://」接頭辞は省略可能です。デフォルト: gs://dataproc-spawner-dist/example-configs/。これは定義済みの example-cluster.yamlexample-single-node.yaml です。 gs://cluster-config-filename.yaml
DATAPROC_LOCATIONS_LIST Dataproc Hub インスタンスが配置されているリージョンのゾーン接尾辞。ユーザーは、Managed Service for Apache Spark クラスタが生成されるゾーンとして、これらのゾーンのいずれかを選択できます。デフォルト: 「b」 b,c,d
DATAPROC_DEFAULT_SUBNET Dataproc Hub インスタンスが Managed Service for Apache Spark クラスタを生成するサブネット。デフォルト: Dataproc Hub インスタンスのサブネット。 https://www.googleapis.com/compute/v1/projects/project-id/regions/region/subnetworks/subnet-name
DATAPROC_SERVICE_ACCOUNT Managed Service for Apache Spark VM を実行するサービス アカウント。デフォルト: 設定されていない場合、 デフォルトの Managed Service for Apache Spark サービス アカウント が使用されます。 service-account@project-id.iam.gserviceaccount.com
SPAWNER_DEFAULT_URL デフォルトで、生成された Managed Service for Apache Spark クラスタに Jupyter UI または JupyterLab UI を表示するかどうか。 デフォルト: 「/lab」 「/」または「/lab」。Jupyter 用または JupyterLab 用。
DATAPROC_ALLOW_CUSTOM_CLUSTERS Managed Service for Apache Spark クラスタのカスタマイズをユーザーに許可するかどうか。 デフォルト: false。 「true」または「false」
DATAPROC_MACHINE_TYPES_LIST クラスタのカスタマイズ(DATAPROC_ALLOW_CUSTOM_CLUSTERS)が有効になっている場合に、ユーザーが生成された Managed Service for Apache Spark クラスタに対して選択できるマシンタイプのリスト。 デフォルト: 空(すべてのマシンタイプが許可されます)。 n1-standard-4,n1-standard-8,e2-standard-4,n1-highcpu-4
NOTEBOOKS_EXAMPLES_LOCATION クラスタの起動時に、生成された Managed Service for Apache Spark クラスタにダウンロードされるノートブック バケット、またはバケット フォルダへの Cloud Storage パス。デフォルト: 空。 gs://bucket-name/

ハブ環境変数の設定

ハブ環境変数を設定する方法には以下の 2 つがあります。

  1. コンソールからハブ環境変数を設定する

  2. テキスト ファイルでハブ環境変数を設定する

コンソールからハブ環境変数を設定する

Google Cloud コンソールの [Dataproc] → [ワークベンチ] ページの [ユーザー管理のノートブック] タブで Dataproc Hub インスタンスを作成する際に、[入力] ボタンをクリックして [Dataproc Hub への入力] フォームを開き、各環境変数を設定できます。

テキスト ファイルでハブ環境変数を設定する

  1. ファイルを作成します。テキスト エディタを使用して、ローカル ファイル内に Dataproc Hub インスタンスの環境変数を設定できます。別の方法として、プレースホルダの値を入力して、変数とその値を変更または追加した後で次のコマンドを実行し、ファイルを作成することもできます。

    cat <<EOF > environment-variables-file
    DATAPROC_CONFIGS=gs://bucket/cluster-config-filename.yaml
    NOTEBOOKS_LOCATION=gs://bucket/notebooks
    DATAPROC_LOCATIONS_LIST=b,c
    EOF
    

  2. ファイルを Cloud Storage に保存します。ローカルの Dataproc Hub インスタンスの環境変数ファイルを Cloud Storage バケットにコピーします。

    gcloud storage cp environment-variable-filename gs://bucket-name/folder-name/

Identity and Access Management(IAM)のロールを設定する

Dataproc Hub には、次の機能を備えた ID が含まれます。

  • 管理者: Dataproc Hub インスタンスを作成する
  • データと ML ユーザー: Dataproc Hub UI にアクセスする
  • Dataproc Hub サービス アカウント: Dataproc Hub を表示する
  • Managed Service for Apache Spark サービス アカウント: Dataproc Hub が作成する Managed Service for Apache Spark クラスタを表す

各 ID で関連するタスクを実行するには、特定のロールまたは権限が必要です。次の表に、各 ID に必要な IAM ロールと権限を示します。

ID タイプ ロールまたは権限
Dataproc Hub 管理者 ユーザーまたはサービス アカウント roles/notebooks.admin
Dataproc Hub ユーザー ユーザー notebooks.instances.usedataproc.clusters.use
Dataproc Hub サービス アカウント roles/dataproc.hubAgent
Dataproc サービス アカウント roles/dataproc.worker

Dataproc Hub インスタンスを作成する

  1. 始める前に: コンソールから Managed Service for Apache Spark Hub インスタンスを作成するには、ユーザー アカウントに compute.instances.create 権限が付与されている必要があります。 Google Cloud また、インスタンスのサービス アカウント(Compute Engine のデフォルトのサービス アカウント、または [IAM と管理] > [サービス アカウント] に示されているユーザー指定のサービス アカウント(Managed Service for Apache Spark VM サービス アカウントを参照))には、iam.serviceAccounts.actAs権限が付与されている必要があります。

  2. コンソールで [**Dataproc→ワークベンチ**] ページに移動し、[**ユーザー管理のノートブック**] タブを選択します。 Google Cloud

  3. フィルタとして事前に選択されていない場合は、[フィルタ] ボックスをクリックして [**Environment:Dataproc Hub""] を選択します。

  4. [新しいノートブック] → [Dataproc Hub] をクリックします。

  5. [ユーザー管理のノートブックの作成] ページで、次の情報を入力します。

    1. [ノートブック名]: Dataproc Hub インスタンス名。
    2. [Region]: Dataproc Hub インスタンスのリージョン を選択します。この Dataproc Hub インスタンスによって生成された Managed Service for Apache Spark クラスタも、このリージョンに作成されます。
    3. [ゾーン]: 選択したリージョン内のゾーンを選択します。
    4. 環境:
      1. Environment: Dataproc Hub を選択します。
      2. Select a script to run after creation(省略可): 生成された Managed Service for Apache Spark クラスタで実行する、初期化アクション スクリプトまたは実行可能ファイルを挿入または 参照して選択できます。
      3. Populate Dataproc Hub (optional): [Populate] をクリックして、各ハブ環境変数を設定するためのフォームを開きます(各変数の説明については、Dataproc Hub インスタンスの環境変数を設定するをご覧ください)。Managed Service for Apache Spark では、設定されていない環境変数にはデフォルト値が使用されます。この代替手段として、メタデータ key:value ペアを設定して、環境変数を設定できます(次の項目を参照)。
      4. Metadata:
        1. ハブ環境変数の設定が含まれるテキスト ファイルを作成した場合は(ハブ環境変数の設定を参照)、ファイルの名前を key にし、ファイルの gs://bucket-name/folder-name/environment-variable-filename Cloud Storage ロケーションを value としてください。Managed Service for Apache Spark では、設定されていない環境変数にはデフォルト値が使用されます。
    5. [**マシンの構成**]
      1. Machine Type: Compute Engine のマシンタイプを選択します。
      2. その他のマシン構成オプションを設定します。
    6. その他の方法:
      1. [ディスク]、[ネットワーキング]、[権限]、[セキュリティ]、[環境のアップグレードとシステムの健全性] のセクションで、デフォルト値の展開と設定または置換を行うことができます。
    7. [作成] をクリックして Dataproc Hub インスタンスを起動します。
  6. インスタンスが作成されると、Dataproc Hub インスタンスの [JupyterLab を開く] リンクが有効になります。ユーザーはこのリンクをクリックして [JupyterHub] サーバーページを開き、Managed Service for Apache Spark JupyterLab クラスタを構成して作成します(Dataproc Hub の使用を参照)。

クリーンアップ

Dataproc Hub インスタンスを削除する

  • Dataproc Hub インスタンスを削除するには:
    gcloud compute instances delete --project=${PROJECT} ${INSTANCE_NAME}
    

バケットの削除

  • 始める前にで作成した Cloud Storage バケットを削除する(バケットに保存されているデータファイルを含む)には:
    gcloud storage rm gs://${BUCKET_NAME} --recursive
    

次のステップ