Dataproc Hub はカスタマイズされた JupyterHub サーバーです。管理者は、Jupyter および JupyterLab ノートブック環境をホストするために、シングル ユーザーの Dataproc クラスタを生成できる Dataproc Hub インスタンスを構成し、作成します(Dataproc Hub の使用を参照)。
目標
Dataproc クラスタ構成を定義する(または、事前定義された構成ファイルのいずれかを使用する)。
Dataproc Hub インスタンスの環境変数を設定する。
Dataproc Hub インスタンスを作成する
始める前に
Google Cloud プロジェクトと Cloud Storage バケットをまだ作成していない場合は作成します。
プロジェクトの設定
- 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.
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Dataproc, Compute Engine, and Cloud Storage API を有効にします。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Dataproc, Compute Engine, and Cloud Storage API を有効にします。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
プロジェクトに Cloud Storage バケットを作成します。作成したバケットには、このチュートリアルで使用するデータを保存します。
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
- [バケットを作成] をクリックします。
- [バケットの作成] ページでユーザーのバケット情報を入力します。次のステップに進むには、[続行] をクリックします。
- [作成] をクリックします。
クラスタ構成を定義する
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 つあります。:
YAML クラスタ構成ファイルをコンソールから作成する
- Google Cloud コンソールで [クラスタの作成] ページを開き、各フィールドを選択して入力し、Dataproc Hub がユーザーのために生成するクラスタのタイプを指定します。
- 左側のパネルの下部にある [同等の REST] を選択します。
- 生成された JSON ブロック(先頭の POST リクエスト行を除く)をコピーし、オンラインの JSON to YAML 変換ツールに貼り付けます(オンラインで「Convert JSON to YAML」を検索)。
- 変換された YAML をローカルの cluster-config-filename.yaml ファイルにコピーします。
既存のクラスタから YAML クラスタ構成ファイルをエクスポートする
- 要件に合わせてクラスタを作成します。
- クラスタ構成をローカルの 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.yaml と example-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 つがあります。
コンソールからハブ環境変数を設定する
Google Cloud コンソールの Dataproc → ワークベンチのユーザー管理のノートブックタブで Dataproc Hub インスタンスを作成する際に、入力ボタンをクリックして Dataproc Hub に入力フォームを開き、各環境変数を設定できます。
テキスト ファイルでハブ環境変数を設定する
ファイルを作成します。テキスト エディタを使用して、ローカル ファイル内に 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
ファイルを 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.use、 dataproc.clusters.use |
Dataproc Hub | サービス アカウント | roles/dataproc.hubAgent |
Dataproc | サービス アカウント | roles/dataproc.worker |
Dataproc Hub インスタンスを作成する
始める前に: Google Cloud コンソールから Dataproc Hub インスタンスを作成するには、ユーザー アカウントに
compute.instances.create
権限が付与されている必要があります。また、インスタンスのサービス アカウント(Compute Engine のデフォルトのサービス アカウント、または [IAM と管理] > [サービス アカウント] に示されているユーザー指定のサービス アカウント(Dataproc VM サービス アカウントを参照)には、iam.serviceAccounts.actAs
権限が付与されている必要があります。Google Cloud コンソールで Dataproc → Workbench ページに移動し、[ユーザー管理ノートブック] を選択します。タブ。
フィルタとして事前に選択されていない場合は、[フィルタ] ボックスをクリックして [**Environment:Dataproc Hub"] を選択します。
[新しいノートブック] → [Dataproc Hub] をクリックします。
[ユーザー管理のノートブックの作成] ページで、次の情報を入力します。
- ノートブック名: Dataproc Hub インスタンス名。
- [リージョン]: Dataproc Hub インスタンスのリージョンを選択します。この Dataproc Hub インスタンスによって生成された Dataproc クラスタも、このリージョンに作成されます。
- [ゾーン]: 選択したリージョン内のゾーンを選択します。
- 環境:
Environment
:Dataproc Hub
を選択します。Select a script to run after creation
(省略可): 生成された Dataproc クラスタで実行する、初期化アクション スクリプトまたは実行可能ファイルを挿入または参照することもできます。Populate Dataproc Hub (optional)
: [入力] をクリックして、各ハブ環境変数を設定するためのフォームを開きます(各変数の説明については、Dataproc Hub インスタンスの環境変数を設定するをご覧ください)。Dataproc では、設定されていない環境変数にはデフォルト値が使用されます。この代替手段として、メタデータのkey:value
ペアを設定して、環境変数を設定できます(次の項目を参照)。Metadata
:- ハブ環境変数の設定が含まれるテキスト ファイルを作成した場合は(ハブ環境変数の設定を参照)、ファイルの名前を
key
にし、ファイルのgs://bucket-name/folder-name/environment-variable-filename
Cloud Storage ロケーションをvalue
としてください。Dataproc では、設定されていない環境変数にはデフォルト値が使用されます。
- ハブ環境変数の設定が含まれるテキスト ファイルを作成した場合は(ハブ環境変数の設定を参照)、ファイルの名前を
- [マシンの構成]:
Machine Type
: Compute Engine のマシンタイプを選択します。- その他のマシン構成オプションを設定します。
- その他の方法:
- [ディスク]、[ネットワーキング]、[権限]、[セキュリティ]、[環境のアップグレードとシステムの健全性] のセクションで、デフォルト値の展開と設定または置換を行うことができます。
- [作成] をクリックして Dataproc Hub インスタンスを起動します。
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}