Dataproc Hub の構成

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

目標

  1. Dataproc Hub クラスタ構成を定義する。

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

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

始める前に

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

  1. プロジェクトの設定

    1. Google アカウントにログインします。

      Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

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

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

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

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

      API を有効にする

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

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

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

      Cloud Storage ブラウザページに移動

    2. [バケットを作成] をクリックします。
    3. [バケットの作成] ダイアログ内で、以下の属性を指定します。
    4. [作成] をクリックします。

クラスタ構成を定義する

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

クラスタ構成では、Dataproc クラスタで使用できる任意の機能やコンポーネント(マシンタイプ、初期化アクション、オプション コンポーネントなど)を指定できます。

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 で [クラスタの作成] ページを開きます。
  2. 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-name.yaml gs://bucket-name/

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

Dataproc Hub インスタンスの環境変数を設定するテキスト ファイルを作成します。必須の変数を設定する必要があります。また、Dataproc Hub インスタンスによって生成された Dataproc クラスタのカスタマイズをユーザーに許可するように、オプションの変数を設定することもできます。

変数 必須 / 省略可 説明
NOTEBOOKS_LOCATION 必須 ユーザーのノートブックを含む Cloud Storage バケットまたはバケット フォルダ。gs:// 接頭辞は省略可能です。 gs://bucket-name/
DATAPROC_CONFIGS 必須 YAML クラスタ構成ファイルへの Cloud Storage パスの文字列のカンマ区切りリスト。gs:// 接頭辞は省略可能です。 gs://bucket-name/folder/cluster-config-filename1.yaml,gs://bucket/folder/cluster-config-filename2.yaml
DATAPROC_LOCATIONS_LIST 必須 Dataproc Hub インスタンスが配置されているリージョンのゾーン接尾辞。ユーザーは、Dataproc クラスタが生成されるゾーンとして、これらのゾーンのいずれかを選択できます。 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 クラスタのデフォルトのサービス アカウントが使用されます。 service-account@project-id.iam.gserviceaccount.com
SPAWNER_DEFAULT_URL 省略可 デフォルトで、生成された Dataproc クラスタに Jupyter UI または JupyterLab UI を表示するかどうか。 / または /lab。Jupyter 用または JupyterLab 用にそれぞれで設定します。
DATAPROC_ALLOW_CUSTOM_CLUSTERS 省略可 Dataproc クラスタのカスタマイズをユーザーに許可するかどうか。 true または false
DATAPROC_MACHINE_TYPES 省略可 クラスタのカスタマイズ(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/

次のコマンドを実行すると、Dataproc Hub インスタンスの環境変数を設定する、ローカルの environment-variable-filename を作成できます。プレースホルダの値を埋めて、変数とその値を変更または追加します。

cat <<EOF > environment-variables-file
DATAPROC_CONFIGS=gs://bucket/cluster-config-name.yaml
NOTEBOOKS_LOCATION=gs://bucket/notebooks
DATAPROC_DEFAULT_SUBNET=https://www.googleapis.com/compute/v1/projects/project/regions/region/subnetworks/default
DATAPROC_LOCATIONS_LIST=b,c
EOF

Dataproc Hub インスタンスの環境変数ファイルを Cloud Storage に保存する

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

gsutil cp environment-variable-filename gs://bucket-name/folder-name/

IAM のロールを設定する

デフォルトでは、Dataproc Hub インスタンスはプロジェクトのデフォルトの Compute Engine サービス アカウントとして実行されます。別のサービス アカウントでインスタンスを作成することもできます。Dataproc Hub インスタンスのサービス アカウントには、次の IAM(Identity and Access Management)のロールが必要です。

  • roles/dataproc.admin: インスタンスが Dataproc クラスタの作成と削除を行うことを許可します。
  • roles/iam.serviceAccountUser: インスタンスがクラスタにサービス アカウントを割り当てることを許可します。

プロジェクトユーザーがこの Hub インスタンスにアクセスできるようにするには、個々のユーザーに roles/iam.serviceAccountUser も付与する必要があります。

ロールの構成

Hub サービス アカウントとノートブック ユーザーの両方に roles/iam.serviceAccountUser ロールを付与する必要がありますが、それぞれ異なるターゲットに適用される必要があります。Hub サービス アカウントは Dataproc サービス アカウントとして機能する必要があり、ユーザーは Hub サービス アカウントとして機能する必要があります。これらのロールを適用するには、次のいずれかを行います。:

  1. プロジェクト レベルで serviceAccountUser ロールを Hub サービス アカウント(<hub-service-account>@<my-project>.iam.gserviceaccount.com)とノートブック ユーザー(<user>@gmail.com)に付与し、両方がプロジェクト内のサービス アカウントとして機能できるようにします。また、プロジェクト レベルで roles/dataproc.admin ロールを Hub サービス アカウントに付与します。OR

  2. 次のプリンシパルに以下のロールを付与します。

    • Dataproc サービス アカウント(<dataproc-service-account>@<my-project>.iam.gserviceaccount.com)に roles/dataproc.worker ロールを付与します。
    • roles/dataproc.admin ロールと roles/iam.serviceAccountUser ロールを Hub サービス アカウント(<hub-service-account>@<my-project>.iam.gserviceaccount.com)に付与します。serviceAccountUser ロールは、プロジェクト レベルで付与することも、Dataproc サービス アカウント(<dataproc-service-account>@<my-project>.iam.gserviceaccount.com)へのアクセス権限として付与することもできます。
    • ノートブック ユーザー(<user>@gmail.com)に roles/dataproc.admin ロールを付与します。このロールは、プロジェクト レベルで付与することも、Hub サービス アカウント(<hub-service-account>@<my-project>.iam.gserviceaccount.com)へのアクセス権限として付与することもできます。

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

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

  2. [新しいインスタンス] をクリックし、[Smart Analytics Frameworks] → [Dataproc Hub] を選択します。

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

    1. [インスタンス名]: Dataproc Hub インスタンス名。
    2. [リージョン]: Dataproc Hub インスタンスのリージョンを選択します。注: この Dataproc Hub インスタンスによって生成された Dataproc クラスタも、このリージョンに作成されます。
    3. [ゾーン]: 選択したリージョン内のゾーンを選択します。
    4. [環境]: Dataproc Hub
      1. [環境変数]:
        1. container-env-file: gs://<var>bucket-name</var>/folder-name<var>/<var>environment-variable-filename</var>Dataproc Hub インスタンス環境変数ファイルの名前と Cloud Storage のロケーションを指定します。
    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}
    

次のステップ