Dataproc Hub の構成

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

目標

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

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

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

始める前に

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

  1. プロジェクトの設定

    1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
    2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

      プロジェクト セレクタに移動

    3. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

    4. Dataproc, Compute Engine, and Cloud Storage API を有効にします。

      API を有効にする

    5. Cloud SDK をインストールして初期化します。

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

    1. Cloud Console で、Cloud Storage ブラウザページに移動します。

      [ブラウザ] に移動

    2. [バケットを作成] をクリックします。
    3. [バケットの作成] ページでユーザーのバケット情報を入力します。次のステップに進むには、[続行] をクリックします。
      • [バケットに名前を付ける] で、バケット名の要件を満たす名前を入力します。
      • [データの保存場所の選択] で、次の操作を行います。
        • [ロケーション タイプ] オプションを選択します。
        • [ロケーション] オプションを選択します。
      • [データのデフォルトのストレージ クラスを選択する] で、ストレージ クラスを選択します。
      • [オブジェクトへのアクセスを制御する方法を選択する] で [アクセス制御] オプションを選択します。
      • [詳細設定(省略可)] には、暗号化メソッド保持ポリシー、またはバケットラベルを指定します。
    4. [作成] をクリックします。

クラスタ構成を定義する

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

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

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

clusterName: cluster-name
config:
  gceClusterConfig:
    metadata:
      'PIP_PACKAGES': 'google-cloud-core>=1.3.0 google-cloud-storage>=1.28.1'
  initializationActions:
  - executableFile: gs://dataproc-initialization-actions/python/pip-install.sh
  softwareConfig:
    imageVersion: 1.5-ubuntu18
    optionalComponents:
    - ANACONDA
    - JUPYTER

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

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

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

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

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

  1. Cloud Console で [クラスタの作成] ページを開き、各フィールドを選択して入力し、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 バケットにコピーします。

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

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

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

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

ハブ環境変数の設定

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

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

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

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

Cloud Console から [Dataproc] - [Notebooks インスタンス] ページからハブ インスタンスを作成する場合、[POPULATE]をクリックすると、各変数を設定できる [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 バケットにコピーします。

    gsutil 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 を表示する
  • Dataproc サービス アカウント: Dataproc Hub が作成する Dataproc クラスタを表します。

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

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

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

  1. Cloud Console の [Dataproc] → [Notebooks インスタンス] ページに移動します。

  2. [新しいインスタンス] → [Dataproc Hub] をクリックします。

  3. [新しいノートブック インスタンス] ページで、次の情報を入力します。

    1. [インスタンス名]: Dataproc Hub インスタンス名。
    2. [リージョン]: Dataproc Hub インスタンスのリージョンを選択します。注: この Dataproc Hub インスタンスによって生成された Dataproc クラスタも、このリージョンに作成されます。
    3. [ゾーン]: 選択したリージョン内のゾーンを選択します。
    4. 環境:
      1. 環境: 「Dataproc Hub」を選択します。
      2. 作成後に実行するスクリプトを選択する(省略可): 生成された Dataproc クラスタで実行する、初期化アクション スクリプトまたは実行可能ファイルを挿入または参照できます。
      3. Dataproc Hub にデータを入力する(省略可): [入力] をクリックして、各ハブ環境変数を設定するためのフォームを開きます(各変数の説明については、Dataproc Hub インスタンスの環境変数を設定するをご覧ください)。あるいは、以下の container-env-file フィールドを使用して、変数の設定が含まれる作成済みのテキスト ファイルを指定します。一部またはすべての環境変数を設定しない場合、Dataproc では設定されていない変数のデフォルト値を使用します。
      4. 環境変数:
        1. container-env-file(省略可): ハブ環境変数の設定が含まれるテキスト ファイルを作成した場合は(ハブ環境変数の設定を参照)、ファイルの名前とCloud Storage のロケーションを指定します。

          例:

          gs://bucket-name/folder-name/environment-variable-filename です。

          一部またはすべての環境変数を設定しない場合、Dataproc では設定されていない変数のデフォルト値を使用します。

    5. [マシンの構成]:
      1. マシンタイプ: Compute Engine のマシンタイプを選択します。
      2. その他のマシン構成オプションを設定します。
    6. [作成] をクリックしてインスタンスを起動します。
  4. インスタンスの実行中に、[Notebooks インスタンス] ページの JupyterLab のリンクをクリックしてインスタンスにアクセスします。

クリーンアップ

Dataproc Hub インスタンスの削除

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

バケットの削除

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

次のステップ