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. Google Cloud プロジェクトで課金が有効になっていることを確認します

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

      API を有効にする

    5. Google Cloud CLI をインストールします。
    6. gcloud CLI を初期化するには:

      gcloud init
    7. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

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

    8. Google Cloud プロジェクトで課金が有効になっていることを確認します

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

      API を有効にする

    10. Google Cloud CLI をインストールします。
    11. gcloud CLI を初期化するには:

      gcloud init

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

    1. Google Cloud コンソールで、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. 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 バケットにコピーします。

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. テキスト ファイルでハブ環境変数を設定する

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

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 バケットにコピーします。

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

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

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

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

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

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

クリーンアップ

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

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

バケットの削除

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

次のステップ