使用 Dataproc JupyterLab 插件实现无服务器的批量和交互式笔记本会话

Dataproc Serverless 的限制和注意事项

  • Spark 作业使用服务账号身份(而不是提交用户的身份)执行。

准备工作

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

    Go to project selector

  3. 启用 Dataproc API。

    启用 API

  4. 安装 Google Cloud CLI。
  5. 如需初始化 gcloud CLI,请运行以下命令:

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

    Go to project selector

  7. 启用 Dataproc API。

    启用 API

  8. 安装 Google Cloud CLI。
  9. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init

安装 Dataproc JupyterLab 插件

您可以在有权访问以下内容的机器或虚拟机上安装和使用 Dataproc JupyterLab 插件: 例如您的本地计算机或 Compute Engine 虚拟机实例

如需安装该插件,请按以下步骤操作:

  1. 确保您的机器上安装了 Python 3.8+。您可以下载 并从 python.org/downloads.

    1. 验证 Python 3.8 及更高版本的安装情况。

      python3 --version
      
  2. 在您的机器上安装 JupyterLab 3.6.3+

    pip3 install --upgrade jupyterlab
    
    1. 验证 JupyterLab 3.6.3+ 安装。

      pip3 show jupyterlab
      
  3. 安装 Dataproc JupyterLab 插件。

    pip3 install dataproc-jupyter-plugin
    
    1. 如果您的 JupyterLab 版本低于 4.0.0,请启用该插件 。

      jupyter server extension enable dataproc_jupyter_plugin
      
  4. 启动 JupyterLab

    jupyter lab
    
    1. 系统会在浏览器中打开 JupyterLab 启动器页面。其中包含 Dataproc 作业和会话部分。它还可以包含 Dataproc 无服务器笔记本Dataproc 集群笔记本部分 如果您有权访问 Dataproc 无服务器笔记本或 Dataproc 集群 (包含 Jupyter 可选组件) 运行状态

      <ph type="x-smartling-placeholder">
      </ph>
    2. 默认情况下,Dataproc Serverless for Spark Interactive 会话运行 位于您在以下位置运行 gcloud init 时设置的项目和区域中 准备工作。你可以更改项目 会话区域设置 JupyterLab 设置 >Dataproc 设置页面。

创建 Dataproc 无服务器运行时模板

Dataproc 无服务器运行时模板(也称为 session 模板) 包含用于在会话中执行 Spark 代码的配置设置。您可以 使用 Jupyterlab 或 gcloud CLI 创建和管理运行时模板。

JupyterLab

  1. 点击 Dataproc 无服务器笔记本中的 New runtime template 卡片 部分(位于 JupyterLab 启动器页面上)。

  2. 填写运行时模板表单。

  3. 指定显示名称说明,然后输入或确认 其他设置

    注意:

    • 网络配置subnet(子网) 已启用专用 Google 访问通道 并且必须允许所有端口上的子网通信(请参阅 Dataproc Serverless for Spark 网络配置)。

      如果您在default 您在准备工作内跑了 gcloud init 未启用专用 Google 访问通道:

      • 为专用 Google 访问通道启用,或者
      • 请选择其他具有已启用专用 Google 访问通道的区域级子网的网络。 您可以更改 Dataproc Serverless 使用的区域 从 JupyterLab 设置 >Dataproc 设置页面。
    • Metastore:如需使用 Dataproc Metastore 服务 在会话中,选择 Metastore 项目 ID、区域和服务。

    • 最长空闲时间:在进入会话前,笔记本最长空闲时间 已终止。允许范围:10 分钟到 336 小时(14 天)。

    • 会话时长上限:在会话结束之前,会话的最长生命周期 已终止。允许范围:10 分钟到 336 小时(14 天)。

    • PHS:您可以选择一个可用的 永久性 Spark 历史记录服务器 让您可以在会话期间和会话之后访问会话日志。

    • Spark 属性:针对每个要设置的属性,点击添加属性 运行 25 万个 Pod请参阅 Spark 属性 以获取支持和不支持的 Spark 属性列表,包括 Spark 运行时、资源和自动扩缩属性。

    • 标签:针对要设置的各个标签点击添加标签 您的无服务器 Spark 会话。

  4. 设置 >Dataproc 设置 页面。

    • 您可以从模板的操作菜单中删除模板。
  5. 点击保存

  6. 打开并重新加载 JupyterLab 启动器页面,以查看已保存的笔记本模板 JupyterLab 启动器页面上的卡片。

gcloud

  1. 使用您的运行时模板配置创建 YAML 文件。

    简单的 YAML

    environmentConfig:
      executionConfig:
        networkUri: default
    jupyterSession:
      kernel: PYTHON
      displayName: Team A
    labels:
      purpose: testing
    description: Team A Development Environment
    

    复杂 YAML

    environmentConfig:
      executionConfig:
        serviceAccount: sa1
        # Choose either networkUri or subnetworkUri
        networkUri: default
        subnetworkUri: subnet
        networkTags:
         - tag1
        kmsKey: key1
        idleTtl: 3600s
        ttl: 14400s
        stagingBucket: staging-bucket
      peripheralsConfig:
        metastoreService: projects/my-project-id/locations/us-central1/services/my-metastore-id
        sparkHistoryServerConfig:
          dataprocCluster: projects/my-project-id/regions/us-central1/clusters/my-cluster-id
    jupyterSession:
      kernel: PYTHON
      displayName: Team A
    labels:
      purpose: testing
    runtimeConfig:
      version: "1.1"
      containerImage: gcr.io/my-project-id/my-image:1.0.1
      properties:
        "p1": "v1"
    description: Team A Development Environment
    

    如果您在default 您在准备工作内跑了 gcloud init 未启用专用 Google 访问通道:

    • 为专用 Google 访问通道启用,或者
    • 请选择其他具有已启用专用 Google 访问通道的区域级子网的网络。 您可以更改 Dataproc Serverless 使用的区域 从 JupyterLab 设置 >Dataproc 设置页面。
  2. 运行以下命令,基于 YAML 文件创建会话(运行时)模板 gcloud beta dataproc session-templates importCloud Shell 中运行命令:

    gcloud beta dataproc session-templates import TEMPLATE_ID \
        --source=YAML_FILE \
        --project=PROJECT_ID \
        --location=REGION
    

启动和管理笔记本

安装 Dataproc JupyterLab 插件后, 您可以点击 JupyterLab 启动器页面上的模板卡片执行以下操作:

在 Dataproc Serverless 上启动 Jupyter 笔记本

Dataproc 无服务器笔记本部分 会显示笔记本模板 映射到 Dataproc 无服务器运行时模板(请参阅 创建 Dataproc 无服务器运行时模板)。

  1. 点击卡片即可创建 Dataproc Serverless 会话以及 启动笔记本。当会话创建完毕且笔记本 内核可供使用时,如果内核状态发生变化, 从 UnknownIdle

  2. 编写和测试笔记本代码。

    1. 复制并粘贴以下 PySpark Pi estimation 代码 ,然后按 Shift+Return 组合键 运行代码。

      import random
          
      def inside(p):
          x, y = random.random(), random.random()
          return x*x + y*y < 1
          
      count = sc.parallelize(range(0, 10000)) .filter(inside).count()
      print("Pi is roughly %f" % (4.0 * count / 10000))
      

      笔记本结果:

  3. 创建和使用笔记本后,您可以终止笔记本会话 点击内核标签页中的关闭内核

    • 如果未终止会话,Dataproc 会终止会话 当会话闲置计时器到时。您可以配置会话 运行时模板配置。 会话的默认闲置时间为 1 小时。

在 Dataproc on Compute Engine 集群上启动笔记本

如果您在 Compute Engine Jupyter 集群上创建了 Dataproc, JupyterLab 启动器页面包含一个 预装了内核卡的 Dataproc 集群笔记本部分。

要在您的 Dataproc 上启动 Jupyter 笔记本,请执行以下操作: Compute Engine 集群:

  1. 点击 Dataproc 集群笔记本部分中的卡片。

  2. 当内核状态从 Unknown 更改为 Idle 时,您可以 开始编写和执行笔记本代码。

  3. 创建和使用笔记本后,您可以终止笔记本会话 点击内核标签页中的关闭内核

管理 Cloud Storage 中的输入和输出文件

分析探索性数据和构建机器学习模型通常涉及 基于文件的输入和输出。Dataproc Serverless 访问这些文件 Cloud Storage 中的资源。

  • 如需访问 Cloud Storage 浏览器,请点击 Cloud Storage 浏览器 JupyterLab 启动器页面边栏中的图标,然后双击 文件夹查看其内容。

  • 您可以点击 Jupyter 支持的文件类型以打开和修改它们。当您 对文件所做的更改都会写入 Cloud Storage。

  • 要创建新的 Cloud Storage 文件夹,请点击“新建文件夹”图标。 然后输入文件夹名称。

  • 如需将文件上传到 Cloud Storage 存储桶或文件夹,请点击 点击上传图标,然后选择要上传的文件。

开发 Spark 笔记本代码

安装 Dataproc JupyterLab 插件后, 您可以从 JupyterLab 启动器页面启动 Jupyter 笔记本,以开发 应用代码。

PySpark 和 Python 代码开发

Dataproc 无服务器和 Compute Engine 上的 Dataproc 支持 PySpark 内核。在 Compute Engine 上使用 Dataproc 也支持 Python 内核。

SQL 代码开发

点击 Dataproc 无服务器笔记本Dataproc 集群笔记本 JupyterLab 启动器页面的部分 来打开 PySpark 笔记本以编写和执行 SQL 代码。

Spark SQL 魔法:由于启动 PySpark 内核 Dataproc 无服务器笔记本 预加载了 Spark SQL 魔法命令,而不是使用 spark.sql('SQL STATEMENT').show() 您可以输入 %%sparksql magic,然后在单元格中输入 SQL 语句。

BigQuery SQL:BigQuery Spark 连接器可让您的笔记本代码加载数据 在 Spark 中执行分析,然后写入结果 导出到 BigQuery 表。

Dataproc 无服务器 2.1 运行时 包含 BigQuery Spark 连接器。 如果您使用 Dataproc 无服务器 2.0 或更早的运行时来启动 Dataproc Serverless 笔记本, 您可以通过添加以下 Spark 属性来安装 Spark BigQuery 连接器 Dataproc 无服务器运行时模板

spark.jars: gs://spark-lib/bigquery/spark-bigquery-with-dependencies_2.12-0.25.2.jar

Scala 代码开发

使用映像创建的 Compute Engine 集群上的 Dataproc 版本 2.0+、2.1+ 和更高版本,包括 Apache Toree、 Jupyter 笔记本平台的 Scala 内核,提供交互式访问 至 Spark。

Metadata Explorer

如果是 Dataproc Metastore (DPMS) 实例, 已附加到 Dataproc 无服务器运行时模板 Dataproc on Compute Engine 集群,DPMS 实例架构 打开笔记本时,JupyterLab Metadata Explorer 中会显示这些元数据。DPMS 是一种 可横向伸缩全托管式 Hive Metastore (HMS) 服务, Google Cloud

如需在 Metadata Explorer 中查看 HMS 元数据,请执行以下操作:

如需打开 JupyterLab Metadata Explorer,请点击边栏中的图标。

您可以在 Metadata Explorer 中搜索数据库、表或列。 点击数据库、表或列名称以查看关联的元数据。

部署代码

安装 Dataproc JupyterLab 插件后, 您可以使用 JupyterLab 执行以下操作:

  • 在 Dataproc 无服务器基础架构上执行笔记本代码

  • 将批量作业提交到 Dataproc Serverless Infrastructure 或 Compute Engine 集群上的 Dataproc。

在 Dataproc Serverless 上运行笔记本代码

  • 点击 Run 图标或按 Shift-Return 键运行代码 一个笔记本单元。

  • 使用运行菜单在一个或多个笔记本单元中运行代码。

将批量作业提交到 Dataproc Serverless

  • 点击 Dataproc 作业和会话部分中的无服务器卡片 (位于 JupyterLab 启动器页面上)。

  • 点击 Batch 标签页,然后点击 Create Batch,然后填写 批量信息字段。

  • 点击提交以提交作业。

将批量作业提交到 Dataproc on Compute Engine 集群

  • 点击 Dataproc 作业和会话部分中的集群卡片 (位于 JupyterLab 启动器页面上)。

  • 点击作业标签页,然后点击提交作业

  • 选择一个集群,然后填写作业字段。

  • 点击提交以提交作业。

查看和管理资源

安装 Dataproc JupyterLab 插件后, 你可以在 Compute Engine 上查看和管理 Dataproc Serverless 和 Data 从 JupyterLab 启动器页面上的 Dataproc 作业和会话部分获取。

点击 Dataproc 作业和会话部分以显示集群无服务器卡。

如需查看和管理 Dataproc Serverless 会话,请执行以下操作:

  1. 点击无服务器卡片。
  2. 点击会话标签页,然后点击某个会话 ID 以打开会话详情 页面查看会话属性、在日志浏览器中查看 Google Cloud 日志, 以及终止会话 注意:系统会创建一个唯一的 Dataproc Serverless 会话,以启动每个 Dataproc 无服务器笔记本。

如需查看和管理 Dataproc Serverless 批次,请执行以下操作:

  1. 点击批次标签页,以查看 当前项目和区域。点击批次 ID 即可查看批次详情。

如需查看和管理 Dataproc on Compute Engine 集群,请执行以下操作:

  1. 点击集群卡片。选择集群标签页以列出 Compute Engine 集群上处于活跃状态的 Dataproc 当前项目和区域。您可以点击操作列中的图标 来启动、停止或重启集群点击集群名称 查看集群详情您可以点击操作列中的图标 来克隆、停止或删除作业。

要查看和管理 Dataproc on Compute Engine 作业,请执行以下操作:

  1. 点击作业卡片以查看 当前项目。点击作业 ID 查看作业详情。