Create a development machine in Compute Engine

检查我的进度

/ 5

Install Software in the development machine

检查我的进度

/ 5

Create a GCS bucket

检查我的进度

/ 5

Download some sample images into your bucket

检查我的进度

/ 5

Create a Cloud Managed Apache Spark cluster

检查我的进度

/ 5

Submit a job to the Cloud Managed Apache Spark Cluster

检查我的进度

/ 5

此实验可能会提供 AI 工具来支持您学习。

GSP010

Google Cloud 自学实验

概览

在本实操实验中,您将学习如何使用托管式 Apache Spark 将计算密集型图片处理任务分配到机器集群。本实验是科学数据处理系列实验的一部分。

学习内容

  • 如何创建预安装了 Apache Spark 的托管式 Apache Spark 集群。
  • 如何构建并运行使用集群上尚未安装的外部软件包的作业。
  • 如何关闭集群。

前提条件

本实验是高级实验。建议您先熟悉托管式 Apache Spark 和 Apache Spark,但不作强制要求。如果您想快速上手这些服务,请务必查看以下实验:

准备就绪后,请向下滚动页面,详细了解您将在本实验中使用的服务。

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。右侧是实验设置和访问权限面板,其中包含以下内容:

    • 打开 Google Cloud 控制台按钮
    • 您在本实验中必须使用的临时凭证(用户名和密码)
    • 帮助您逐步完成该实验所需的其他信息(如果需要)

    请注意,实验计时器位于页面顶部附近,将显示剩余时间。

  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示“登录”页面。

    提示:可以将这些标签页分别放在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在实验设置和访问权限面板中找到“用户名”。

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在实验设置和访问权限面板中找到“密码”。

  6. 点击下一步

    重要提示:您必须使用实验提供的凭证。请勿使用您的 Google Cloud 账号凭证。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 依次点击进入后续页面:

    • 接受条款及条件。
    • 由于这是临时账号,请勿添加账号恢复选项或双重身份验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。 “导航菜单”图标和“搜索”字段

简介

托管式 Apache Spark 是一项托管式 Spark 和 Hadoop 服务。借助该服务,您可以充分利用开源数据工具来进行批处理、查询、流式传输和机器学习。托管式 Apache Spark 自动化功能可帮助您快速创建和轻松管理集群,并在不需要时关闭集群来节省费用。由于花在管理上的时间和费用减少,您便可以专注于处理作业和数据。

如果您的计算密集型作业具备以下特征,请考虑使用托管式 Apache Spark 进行扩容:

  1. 作业是高度并行的,也就是说,您可以在不同的机器上处理不同的数据子集。
  2. 您已经有执行计算的 Apache Spark 代码,或者您对 Apache Spark 比较熟悉。
  3. 工作负载在各个数据子集之间的分布非常均匀

如果不同数据子集需要不同的处理量,或者您还不是很熟悉 Apache Spark,则 Cloud Dataflow 上的 Apache Beam 是一个极具吸引力的替代方案,因为它能够提供自动扩缩的数据流水线。

在本实验中,您将运行的作业会使用 OpenCV 中指定的一组图片处理规则来勾勒出图片中的人脸轮廓。事实上,Vision API 是完成此任务的更好选择,因为这类人工编写的规则效果并不理想。不过,本实验旨在展示如何以分布式的方式来执行计算密集型作业。

任务 1. 在 Compute Engine 中创建开发机器

首先,您需要创建一个虚拟机来托管服务。

  1. 在 Cloud 控制台中,依次点击 Compute Engine > 虚拟机实例 > 创建实例

导航路径,指向突出显示的“创建实例”按钮

  1. 机器配置中,

    选择以下值:

    • 名称devhost
    • 系列E2
    • 机器类型e2-standard-2(2 个 vCPU)
  2. 点击安全

    • 访问权限范围部分中,选择授予对所有 Cloud API 的完整访问权限
  3. 点击创建。此机器将作为您的开发 bastion(堡垒)主机。

验证您已完成的任务

点击检查我的进度以验证您已完成的任务。

在 Compute Engine 中创建开发机器。
  1. 接下来,点击控制台上的 SSH 按钮,通过 SSH 连接到实例。

任务 2. 安装软件

现在,设置用于运行作业的软件环境。您将使用开源构建工具 sbt,为即将提交到托管式 Apache Spark 集群的作业构建 JAR。此 JAR 将包含运行该作业所必需的程序和软件包。该作业将检测存储在 Cloud Storage 存储桶中的一组图片文件内的人脸,并将勾勒出人脸轮廓的图片文件写入到同一个或另一个 Cloud Storage 存储桶中。

  1. 设置 Scala 和 sbt。在 SSH 窗口中,运行以下命令来安装 Scalasbt,以便编译代码:
sudo apt-get install -y dirmngr unzip apt-transport-https bc scala sudo apt-get update sudo mkdir -p /etc/apt/keyrings curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x99E82A75642AC823" | sudo gpg --dearmor -o /etc/apt/keyrings/scalasbt-archive-keyring.gpg echo "deb [signed-by=/etc/apt/keyrings/scalasbt-archive-keyring.gpg] https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list sudo apt-get update sudo apt-get install -y sbt

接下来,您将构建特征检测器文件。本实验中的代码基于 GitHub 上托管式 Apache Spark 代码库中的现有方案稍作修改而成。您需要下载该代码,然后通过 cd 命令进入本实验的目录,并构建特征检测器的“fat JAR”,以便将其提交至托管式 Apache Spark。

  1. 在 SSH 窗口中运行以下命令:
gcloud storage cp gs://spls/gsp124/cloud-dataproc.zip . unzip cloud-dataproc.zip cd cloud-dataproc/codelabs/opencv-haarcascade echo "sbt.version=1.9.8" > project/build.properties
  1. 启动构建。此命令会构建特征检测器的“fat JAR”,以便将其提交至托管式 Apache Spark:
sed -i 's/scalaVersion := "2.12.*/scalaVersion := "2.12.19"/' build.sbt sbt assembly 注意:此步骤需要一段时间来处理,大约需要五分钟或更长时间。请耐心等待。

验证您已完成的任务

点击检查我的进度以验证您已完成的任务。

在开发机器中安装软件。

任务 3. 创建 Cloud Storage 存储桶并收集图片

现在,您已经构建了特征检测器文件,接下来创建一个 Cloud Storage 存储桶,并向其中添加一些示例图片。

  1. 提取项目 ID,用于命名存储桶:
GCP_PROJECT=$(gcloud config get-value core/project)
  1. 为存储桶命名,并为存储桶名称设置一个 shell 变量。此 shell 变量将用于在命令中指代您的存储桶:
MYBUCKET="${USER//google}-image-${RANDOM}" echo MYBUCKET=${MYBUCKET}
  1. 使用 Cloud SDK 中 gcloud 附带的 gsutil 程序,创建用于存放示例图片的存储桶:
gcloud storage buckets create gs://${MYBUCKET}

验证您已完成的任务

点击检查我的进度以验证您已完成的任务。

创建 Cloud Storage 存储桶。
  1. 将一些示例图片下载到存储桶中:
curl https://www.publicdomainpictures.net/pictures/20000/velka/family-of-three-871290963799xUk.jpg | gcloud storage cp - gs://${MYBUCKET}/imgs/family-of-three.jpg curl https://www.publicdomainpictures.net/pictures/10000/velka/african-woman-331287912508yqXc.jpg | gcloud storage cp - gs://${MYBUCKET}/imgs/african-woman.jpg curl https://www.publicdomainpictures.net/pictures/10000/velka/296-1246658839vCW7.jpg | gcloud storage cp - gs://${MYBUCKET}/imgs/classroom.jpg

您刚刚将以下图片下载到了 Cloud Storage 存储桶中:

一家三口

一位女士

课堂

验证您已完成的任务

点击检查我的进度以验证您已完成的任务。

将一些示例图片下载到存储桶中。
  1. 运行以下命令,查看存储桶内容:
gcloud storage ls -R gs://${MYBUCKET}

输出:

gs://gcpstaging20392-student-image-23218/imgs/: gs://gcpstaging20392-student-image-23218/imgs/african-woman.jpg gs://gcpstaging20392-student-image-23218/imgs/classroom.jpg gs://gcpstaging20392-student-image-23218/imgs/family-of-three.jpg `

任务 4. 创建托管式 Apache Spark 集群

  1. 在 SSH 窗口中运行以下命令,为您的集群命名并设置 MYCLUSTER 变量。您将在命令中使用此变量来指代您的集群:
MYCLUSTER="${USER/_/-}-qwiklab" echo MYCLUSTER=${MYCLUSTER}
  1. 设置要使用的全局 Compute Engine 区域并创建新集群:
gcloud config set dataproc/region {{{project_0.default_region | "REGION"}}} gcloud dataproc clusters create ${MYCLUSTER} \ --bucket=${MYBUCKET} \ --worker-machine-type=e2-standard-2 \ --master-machine-type=e2-standard-2 \ --initialization-actions=gs://spls/gsp010/install-libgtk.sh \ --image-version=2.0 \ --worker-boot-disk-size=30GB \ --master-boot-disk-size=30GB
  1. 如果系统提示您使用可用区而不是区域,请输入 Y

这可能需要几分钟时间。对本实验而言,包含两个工作器节点的默认集群设置应该足以满足需求。为减少集群使用的总核心数,工作器和主机器类型均指定为 e2-standard-2

对于 initialization-actions 标志,您要传递一个脚本,该脚本会在每个集群机器上安装 libgtk2.0-dev 库。运行代码需要用到此库。

注意: 如果集群创建失败,请尝试删除集群 (gcloud dataproc clusters delete ${MYCLUSTER}),然后重试之前的集群创建命令。

验证您已完成的任务

点击检查我的进度以验证您已完成的任务。

创建托管式 Apache Spark 集群。 注意:如需详细了解如何使用命令行标志自定义集群设置,请参阅 Cloud SDK gcloud dataproc clusters create 参考文档

任务 5. 向托管式 Apache Spark 集群提交作业

在本实验中,您运行的程序用作人脸检测器,因此输入的 haar 分类器必须描述人脸。haar 分类器是一个 XML 文件,用于描述程序检测到的特征。您需要下载 haar 分类器文件,并在向托管式 Apache Spark 集群提交作业时,将该文件的 Cloud Storage 路径添加到第一个参数中。

  1. 在 SSH 窗口中运行以下命令,以便将人脸检测配置文件加载到您的存储桶中:
curl https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_default.xml | gcloud storage cp - gs://${MYBUCKET}/haarcascade_frontalface_default.xml
  1. 使用您上传到 Cloud Storage 存储桶的 imgs 目录中的一组图片,作为特征检测器的输入。您必须将该目录的路径添加为作业提交命令的第二个参数。
  • 将作业提交到托管式 Apache Spark:
cd ~/cloud-dataproc/codelabs/opencv-haarcascade gcloud dataproc jobs submit spark \ --cluster ${MYCLUSTER} \ --jar target/scala-2.12/feature_detector-assembly-1.0.jar -- \ gs://${MYBUCKET}/haarcascade_frontalface_default.xml \ gs://${MYBUCKET}/imgs/ \ gs://${MYBUCKET}/out/

如果您有要使用的任何其他图片,可以添加到第二个参数中指定的 Cloud Storage 存储桶内。

  1. 如需监控作业,请在 Cloud Platform 控制台中依次选择导航菜单 > 查看所有产品。然后,在分析下,依次点击托管式 Apache Spark > 作业

当看到状态为“成功”时,即可继续执行后续步骤。

作业输出状态显示为“成功”

验证您已完成的任务

点击检查我的进度以验证您已完成的任务。

向托管式 Apache Spark 集群提交作业。
  1. 作业完成后,请前往导航菜单 > Cloud Storage,找到您创建的存储桶(其名称将由您的用户名、student-image 和一个随机数组成),然后点击该存储桶。

  2. 点击 Out 目录中的图片。

  3. 点击下载图标,该图片就会下载到您的计算机上。

人脸检测的准确度如何?事实上,Vision API 是完成此任务的更好选择,因为这类人工编写的规则效果并不理想。接下来,您可以了解它的运作方式。

  1. (可选)在存储桶中,前往 imgs 文件夹,然后点击您上传到存储桶的其他图片。这会下载三个示例图片。将这些图片保存到您的计算机。

  2. 点击此链接前往 Vision API 页面,向下滚动到试用此 API 部分,然后上传您从存储桶下载的图片。您将在几秒钟内看到图片检测结果。底层的机器学习模型在不断改进,因此您的结果可能有所不同:

对一位女士进行人脸检测 在课堂上进行人脸检测 对一家三口进行人脸检测

  1. (可选)如果您想尝试改进特征检测器,可以修改 FeatureDetector 代码,然后重新运行 sbt assemblygcloud dataprocjobs submit 命令。

任务 6. 检验您的掌握情况

下方选择题可加强您对本实验所涉概念的理解。请尽您所能回答。

恭喜!

您学习了如何启动托管式 Apache Spark 集群并运行作业!

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2026 年 7 月 6 日

上次测试实验的时间:2026 年 7 月 6 日

版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

使用无痕模式或无痕浏览器窗口是运行此实验的最佳方式。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。