配置 Dataproc 中心

Dataproc 中心是自定义的 Jupyterhub服务器。管理员可以配置和创建 Dataproc 中心实例,这些实例可以生成单用户Dataproc集群来托管 JupyterJupyterLab 笔记本环境(请参阅使用 Dataproc 中心)。

目标

  1. 定义 Dataproc 中心集群配置。

  2. 设置 Dataproc 中心实例环境变量。

  3. 创建 Dataproc 中心实例。。

准备工作

如果您尚未创建 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 中心实例根据 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 中心创建 Dataproc 笔记本环境时可以选择。

您可以通过以下两种方式创建 YAML 集群配置文件:

  1. 通过控制台创建 YAML 集群配置文件

  2. 从现有集群中导出 YAML 集群配置文件

通过控制台创建 YAML 集群配置文件

  1. 打开 Cloud Console 中的创建集群页面。
  2. 选择并填写字段以指定 Dataproc 中心将为用户生成的集群类型。
    1. 在页面底部,选择“等效 REST”。
    2. 复制生成的 JSON 代码块(不包括最前面的 POST 请求行),然后将 JSON 代码块粘贴到在线 JSON-YAML 转换器(搜索“将 JSON 转换为 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
     

在 Cloud Storage 中保存 YAML 配置文件

将本地 YAML 集群配置文件复制到 Cloud Storage 存储分区。

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

设置 Dataproc 中心实例环境变量

创建一个设置 Dataproc 中心实例环境变量的文本文件。该文本文件必须设置必需的变量,并且可以设置可选变量,以允许用户自定义由 Dataproc 中心实例生成的 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 中心实例所在区域中的地区后缀。用户可以选择其中一个地区作为将生成其 Dataproc 集群的地区。 b,c,d
DATAPROC_DEFAULT_SUBNET 可选 Dataproc 中心实例将在其上生成 Dataproc 集群的子网。必须与 Dataproc 中心子网相同。 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 或 JupyterLab 界面。 //lab,分别用于 Jupyter 或 JupyterLab。
DATAPROC_ALLOW_CUSTOM_CLUSTERS 可选 是否允许用户自定义其 Dataproc 集群。 truefalse
DATAPROC_MACHINE_TYPES 可选 如果已启用集群自定义(DATAPROC_ALLOW_CUSTOM_CLUSTERS),则系统允许用户为其生成的 Dataproc 集群选择的机器类型列表。 n1-standard-4,n1-standard-8,e2-standard-4,n1-highcpu-4
NOTEBOOKS_EXAMPLES_LOCATION 可选 集群启动时,将 Cloud Storage 路径的笔记本存储分区或存储分区文件夹下载到衍生的 Dataproc 集群。 gs://bucket-name/

您可以通过运行以下命令来创建用于设置 Dataproc 中心实例环境变量的本地 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

在 Cloud Storage 中保存 Dataproc 中心实例环境变量文件

将本地 YAML Dataproc 中心实例环境变量文件复制到 Cloud Storage 存储分区。

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

设置 IAM 角色

默认情况下,Dataproc 中心实例将作为项目默认 Compute Engine 服务帐号运行。您可以选择使用其他服务帐号创建实例。Dataproc 中心实例服务帐号必须具有以下 IAM(身份和访问权限管理)角色

如需允许项目用户访问中心实例,还必须将 roles/iam.serviceAccountUser 授予单个用户。

配置角色

请注意,中心服务帐号和笔记本用户都必须获得 roles/iam.serviceAccountUser 角色,但各自必须应用于不同的目标:中心服务帐号需要能够充当 Dataproc 服务帐号,而用户需要能够充当中心服务帐号。如需应用这些角色,请执行以下任一操作:

  1. 将项目级层的 serviceAccountUser 角色授予中心服务帐号 (<hub-service-account>@<my-project>.iam.gserviceaccount.com) 和笔记本用户 (<user>@gmail.com),以允许它们充当项目中的任何服务帐号。此外,还要将项目级层的 roles/dataproc.admin 角色授予中心服务帐号。或

  2. 向以下主帐号授予以下角色:

    • roles/dataproc.worker 角色授予 Dataproc 服务帐号 (<dataproc-service-account>@<my-project>.iam.gserviceaccount.com)。
    • roles/dataproc.admin 角色和 roles/iam.serviceAccountUser 角色授予中心服务帐号 (<hub-service-account>@<my-project>.iam.gserviceaccount.com)。serviceAccountUser 角色可以在项目级层授予,也可以用于访问 Dataproc 服务帐号 (<dataproc-service-account>@<my-project>.iam.gserviceaccount.com)。
    • roles/dataproc.admin 角色授予笔记本用户 (<user>@gmail.com)。此角色可以在项目级层授予,可以用于访问中心服务帐号 (<hub-service-account>@<my-project>.iam.gserviceaccount.com)。

创建 Dataproc 中心实例

  1. 转到 Cloud Console 中的Dataproc→笔记本实例页面。

  2. 点击“新建实例”,然后选择“智能分析框架→Dataproc 中心”

  3. 请在新建笔记本实例页面上提供以下信息:

    1. 实例名称:Dataproc 中心实例名称。
    2. 区域 - 为 Dataproc 中心实例选择一个区域。注意:此 Dataproc 中心实例生成的 Dataproc 集群也会在此地区中创建。
    3. 地区:在所选区域内选择一个地区。
    4. 环境:Dataproc 中心
      1. 环境变量
        1. container-env-file: gs://<var>bucket-name</var>/folder-name<var>/<var>environment-variable-filename</var>。提供 Dataproc 中心实例环境变量文件的名称和 Cloud Storage 位置。
    5. 机器配置:
      1. 机器类型 - 选择 Compute Engine 的机器类型。
      2. 设置其他机器配置选项。
    6. 点击“创建”以启动实例。
  4. 实例运行时,点击“笔记本实例”页面上的“JupyterLab”链接即可访问该实例。

清理

删除 Dataproc 中心实例

  • 要删除 Dataproc 中心实例,请执行以下操作:
    gcloud compute instances delete --project=${PROJECT} ${INSTANCE_NAME}
    

删除存储分区

  • 如需删除您在准备工作中创建的 Cloud Storage 存储分区(包括存储在存储分区中的数据文件),请输入以下命令:
    gsutil -m rm -r gs://${BUCKET_NAME}
    

后续步骤