配置 Dataproc 中心

Dataproc Hub 是自定义的 JupyterHub 服务器。管理员可以配置并创建 Dataproc Hub 实例,这些实例可以生成单用户 Managed Service for Apache Spark 集群,托管 JupyterJupyterLab 笔记本环境(请参阅使用 Dataproc Hub)。

为多个用户启动笔记本。您可以创建启用了 Managed Service for Apache Spark 的 Vertex AI Workbench 实例,也可以在虚拟机上安装 Managed Service for Apache Spark JupyterLab 插件,以便向多个用户提供笔记本。

目标

  1. 定义 Managed Service for Apache Spark 集群配置(或使用其中一个预定义的配置文件)。

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

  3. 创建 Dataproc 中心实例。

准备工作

如果您尚未创建 Google Cloud 项目和 Cloud Storage 存储桶,请先创建这些资源。

  1. 设置项目

    1. 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
    2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Roles required to select or create a project

      • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
      • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

      Go to project selector

    3. Verify that billing is enabled for your Google Cloud project.

    4. Enable the Dataproc, Compute Engine, and Cloud Storage APIs.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the APIs

    5. 安装 Google Cloud CLI。

    6. 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

    7. 如需初始化 gcloud CLI,请运行以下命令:

      gcloud init
    8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Roles required to select or create a project

      • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
      • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

      Go to project selector

    9. Verify that billing is enabled for your Google Cloud project.

    10. Enable the Dataproc, Compute Engine, and Cloud Storage APIs.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the APIs

    11. 安装 Google Cloud CLI。

    12. 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

    13. 如需初始化 gcloud CLI,请运行以下命令:

      gcloud init

  2. 在项目中创建 Cloud Storage 存储桶,以保存此教程中使用的数据。

    1. 在 Google Cloud 控制台中,前往 Cloud Storage 存储分区页面。

      进入“存储桶”

    2. 点击 创建
    3. 创建存储桶页面上,输入您的存储桶信息。要转到下一步,请点击继续
      1. 开始使用部分中,执行以下操作:
        • 输入符合存储桶命名要求的全局唯一的名称。
        • 如需添加存储桶标签,请展开标签部分 (),点击 添加标签,并为标签指定 keyvalue
      2. 选择数据存储位置部分,执行以下操作:
        1. 选择位置类型
        2. 位置类型下拉菜单中选择一个位置,用于永久存储存储桶的数据。
        3. 如需设置跨存储桶复制,请选择通过 Storage Transfer Service 添加跨存储桶复制,然后按照以下步骤操作:

          设置跨存储桶复制

          1. 存储桶菜单中,选择一个存储桶。
          2. 复制设置部分中,点击配置以配置复制作业的设置。

            系统会显示配置跨存储桶复制窗格。

            • 如需按对象名称前缀过滤要复制的对象,请输入要用于包含或排除对象的前缀,然后点击 添加前缀
            • 如需为复制的对象设置存储类别,请从存储类别菜单中选择一个存储类别。 如果您跳过此步骤,则复制的对象会默认使用目标存储桶的存储类别。
            • 点击完成
      3. 选择数据存储方式部分中,执行以下操作:
        1. 为存储桶选择默认存储类别,或者选择 Autoclass 对存储桶数据进行自动存储类别管理。
        2. 如需启用分层命名空间,请在针对数据密集型工作负载优化存储部分中,选择在此存储桶上启用分层命名空间
      4. 选择如何控制对对象的访问权限部分中,选择存储桶是否强制执行禁止公开访问,然后为存储桶对象选择访问权限控制方法
      5. 选择如何保护对象数据部分中,执行以下操作:
        • 数据保护下,选择您要为存储桶设置的任何选项。
          • 如需启用软删除,请选中软删除政策(用于数据恢复)复选框,然后指定您希望在删除对象后保留对象的天数。
          • 如需设置对象版本控制,请选中对象版本控制(用于版本控制)复选框,然后指定每个对象的最大版本数以及非当前版本过期前的天数。
          • 如需为对象和存储分区启用保留政策,请点击保留(合规性)复选框,然后执行以下操作:
            • 如需启用对象保留锁定,请点击启用对象保留复选框。
            • 如需启用存储桶锁定,请点击设置存储桶保留政策复选框,然后为保留期限选择时间单位和时长。
        • 如需选择对象数据的加密方式,请展开数据加密部分 (),然后选择数据加密方法
    4. 点击创建

定义集群配置

Dataproc 中心实例根据 YAML 集群配置文件中包含的配置值创建集群。

集群配置可以指定 Managed Service for Apache Spark 集群可用的任何功能或组件(例如机器类型、初始化操作和可选组件)。集群映像版本必须为 1.4.13 或更高版本。尝试生成映像版本低于 1.4.13 的集群会导致错误并失败。

示例 YAML 集群配置文件

clusterName: cluster-name
config:
  softwareConfig:
    imageVersion: 2.2-ubuntu22
    optionalComponents:
    - JUPYTER

每个配置都必须保存在 Cloud Storage 中。您可以创建并保存多个配置文件,让用户在使用 Dataproc Hub 创建 Managed Service for Apache Spark 集群笔记本环境时为其提供选择。

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

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

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

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

  1. 打开 Google Cloud 控制台中的创建集群页面,然后选择并填写相应字段以指定 Dataproc Hub 将为用户生成的集群类型。
    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 存储桶。

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

设置 Dataproc 中心实例环境变量

管理员可以设置下表中列出的中心环境变量,以设置将由中心用户生成的 Managed Service for Apache Spark 集群的特性。

变量 说明 示例
NOTEBOOKS_LOCATION Cloud Storage 存储桶或包含用户笔记本的存储桶文件夹。“gs://”前缀是可选项。默认Managed Service for Apache Spark 暂存存储桶 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 实例所在区域中的可用区后缀。用户可以选择其中一个可用区作为将生成其 Managed Service for Apache Spark 集群的可用区。默认值:“b”。 b,c,d
DATAPROC_DEFAULT_SUBNET Dataproc 中心实例将在其上生成 Apache Spark 集群的托管式服务子网。 默认值:Dataproc Hub 实例子网。 https://www.googleapis.com/compute/v1/projects/project-id/regions/region/subnetworks/subnet-name
DATAPROC_SERVICE_ACCOUNT 用来运行 Managed Service for Apache Spark 虚拟机的服务账号默认值:如果未设置,则使用默认的 Managed Service for Apache Spark 服务账号 service-account@project-id.iam.gserviceaccount.com
SPAWNER_DEFAULT_URL 默认情况下,是否在生成的 Managed Service for Apache Spark 集群上显示 Jupyter 或 JupyterLab 界面。 默认值:“/lab”。 “/”或“/lab”,分别用于 Jupyter 或 JupyterLab。
DATAPROC_ALLOW_CUSTOM_CLUSTERS 是否允许用户自定义其 Managed Service for Apache Spark 集群。 默认值:false。 “true”或“false”
DATAPROC_MACHINE_TYPES_LIST 如果已启用集群自定义(DATAPROC_ALLOW_CUSTOM_CLUSTERS),则系统允许用户为其生成的 Managed Service for Apache Spark 集群选择的机器类型列表。 默认值:空(允许使用所有机器类型)。 n1-standard-4,n1-standard-8,e2-standard-4,n1-highcpu-4
NOTEBOOKS_EXAMPLES_LOCATION 集群启动时,要下载到生成的 Managed Service for Apache Spark 集群的笔记本存储桶或存储桶文件夹的 Cloud Storage 路径。 默认值:空。 gs://bucket-name/

设置中心环境变量

设置中心环境变量的方法有两种:

  1. 通过控制台设置中心环境变量

  2. 在文本文件中设置中心环境变量

通过控制台设置中心环境变量

在 Google Cloud 控制台的 Dataproc→Workbench 页面上的用户管理的笔记本标签页中创建 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 存储桶中。

    gcloud storage cp environment-variable-filename gs://bucket-name/folder-name/

设置 Identity and Access Management (IAM) 角色

Dataproc Hub 包含具有以下能力的下列身份:

  • 管理员:创建 Dataproc Hub 实例
  • 数据和机器学习用户:访问 Dataproc Hub 界面
  • Dataproc Hub 服务账号:表示 Dataproc Hub
  • Managed Service for Apache Spark 服务账号:表示 Dataproc Hub 创建的 Managed Service for Apache Spark 集群。

每个身份都需要特定角色或权限才能执行其关联任务。下表总结了每个身份所需的 IAM 角色和权限。

身份 类型 角色或权限
Dataproc Hub 管理员 用户或服务账号 roles/notebooks.admin
Dataproc Hub 用户 用户 notebooks.instances.usedataproc.clusters.use
Dataproc 中心 服务账号 roles/dataproc.hubAgent
Dataproc 服务账号 roles/dataproc.worker

创建 Dataproc 中心实例

  1. 准备工作:如需通过 Google Cloud 控制台创建 Managed Service for Apache Spark Hub 实例,您的用户账号必须具有 compute.instances.create 权限。此外,实例的服务账号,即 Compute Engine 默认服务账号或 IAM 和管理 > 服务账号中列出的用户指定服务账号(请参阅 Managed Service for Apache Spark 虚拟机服务账号)必须具有 iam.serviceAccounts.actAs 权限。

  2. 前往 Google Cloud 控制台中的 Dataproc→Workbench 页面,然后选择用户管理的笔记本标签页。

  3. 如果未预先选择过滤条件,请点击过滤条件框,然后选择“环境:Dataproc Hub”。

  4. 依次点击新建笔记本→Dataproc Hub

  5. 创建用户管理的笔记本页面上,提供以下信息:

    1. 笔记本名称:Dataproc Hub 实例名称。
    2. 区域:为 Dataproc Hub 实例选择一个区域。此 Dataproc Hub 实例生成的 Apache Spark 集群托管服务也会在此区域中创建。
    3. 地区:在所选区域内选择一个地区。
    4. 环境
      1. Environment:选择 Dataproc Hub
      2. Select a script to run after creation(可选):您可以插入或浏览并选择在生成的 Managed Service for Apache Spark 集群上运行的初始化操作脚本或可执行文件。
      3. Populate Dataproc Hub (optional):点击填充打开一个表单,以便设置每个中心环境变量(请参阅设置 Dataproc Hub 实例环境变量,获取每个变量的描述)。Managed Service for Apache Spark 会为未设置的环境变量使用默认值。或者,您也可以设置元数据 key:value 对来设置环境变量(请参阅下一个项目)。
      4. Metadata
        1. 如果您创建了包含中心环境变量设置的文本文件(请参阅设置中心环境变量),请将文件的名称作为 key 提供,并将文件的 gs://bucket-name/folder-name/environment-variable-filename Cloud Storage 位置作为 value 提供。Managed Service for Apache Spark 会为未设置的环境变量使用默认值。
    5. 机器配置:
      1. Machine Type:选择 Compute Engine 机器类型
      2. 设置其他机器配置选项。
    6. 其他选项
      1. 您可以在磁盘网络权限安全环境升级和系统健康状况部分展开和设置或替换默认值。
    7. 点击创建以启动 Dataproc Hub 实例。
  6. Dataproc Hub 实例的打开 JupyterLab 链接会在实例创建后变为有效。用户点击此链接可打开 JupyterHub 服务器页面,以配置和创建 Managed Service for Apache Spark JupyterLab 集群(请参阅使用 Dataproc Hub)。

清理

删除 Dataproc Hub 实例

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

删除存储桶

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

后续步骤