在亚马逊 SageMaker Studio 上托管 Spark 用户界面

亚马逊 SageMaker 提供了多种使用 A pache Spark 运行分布式数据处理任务的方法,Apache Spark 是一种用于大数据处理的流行分布式计算框架。

通过连接 Sage Maker Studio 笔记本电脑和 亚马逊云科技 Glue Interactiv e Sessions,你可以通过亚马逊 SageMaker Studio 以交互方式运行 Spark 应用程序,使用无 服务器集群运行 Spark 作业。通过交互式会话,您可以选择 Apache Spark 或 Ray 来轻松处理大型数据集,而不必担心集群管理。

或者,如果您需要对环境进行更多控制,则可以使用预构建的 SageMaker Spark 容器,通过 Amazon SageMaker Processing 在完全托管的分布式集群上以批处理作业的形式运行 Spark 应用程序。 此选项允许您选择多种类型的实例(计算优化、内存优化等)、集群中的节点数量和集群配置,从而提高数据处理和模型训练的灵活性。

最后,您可以通过将 Studio 笔记本电脑与 亚马逊 EMR 集群 连接或在亚马逊 弹性计算云 ( 亚马逊 EC2)上运行 Spark 集群来运行 Spark 应用程序。

所有这些选项允许您生成和存储 Spark 事件日志,以便通过基于 Web 的用户界面(通常称为 Spark UI )对其进行分析 ,该界面运行 Spark 历史服务器来监控 Spark 应用程序的进度、跟踪资源使用情况和调试错误。

在这篇文章中,我们分享了一个 解决方案 , 用于在SageMaker Studio上安装和运行Spark History Server以及直接从SageMaker Studio IDE访问Spark用户界面,用于分析由不同亚马逊云科技服务(Aws Glue Interactive Sessions、SageMaker 处理任务和亚马逊 EMR)生成并存储在亚马逊简单存储服务 (Amazon S3)存储桶中的Spark日志。

解决方案概述

该解决方案将 Spark 历史服务器集成到 SageMaker Studio 中的 Jupyter Server 应用程序中。这允许用户直接从 SageMaker Studio IDE 中访问 Spark 日志。集成的 Spark 历史服务器支持以下内容:

  • 访问 SageMaker Processing Spark 作业生成的日志
  • 访问 亚马逊云科技 Glue Spark 应用程序生成的日志
  • 访问由自行管理的 Spark 集群和亚马逊 EMR 生成的日志

还提供了一个名为 sm-sp ark-cli 的实用命令行界面 (CLI),用于从 S ageMak er Studio 系统终端与 Spark 用户界面进行交互。 sm-spark-cli 无需离开 SageMak er Studio 即可管理 Spark 历史服务器。

该解决方案由执行以下操作的 shell 脚本组成:

  • 在 Jupyter 服务器上安装 Spark 以获取 SageMaker Studio 用户配置文件或 SageMaker Studio 共享空间
  • 为用户配置文件或共享空间安装 sm-spark-cli

在 SageMaker Studio 域中手动安装 Spark 用户界面

要在 SageMaker Studio 上托管 Spark 用户界面,请完成以下步骤:

  1. 从 SageMaker Studio 启动器中选择 “ 系统终端 ”。

  1. 在系统终端中运行以下命令:
curl -LO https://github.com/aws-samples/amazon-sagemaker-spark-ui/releases/download/v0.1.0/amazon-sagemaker-spark-ui-0.1.0.tar.gz
tar -xvzf amazon-sagemaker-spark-ui-0.1.0.tar.gz

cd amazon-sagemaker-spark-ui-0.1.0/install-scripts
chmod +x install-history-server.sh
./install-history-server.sh

命令需要几秒钟才能完成。

  1. 安装完成后,你可以使用提供的 sm-spark-c li 启动 Spark 用户界面, 并通过运行以下代码从 Web 浏览器访问它:

sm-spark-cli 开始 s3://DOC-EXAMPLE-BUCKET/

运行 Spark 应用程序时,可以配置存储 SageMaker Processing、亚马逊云科技 Glue 或 Amazon EMR 生成的事件日志的 S3 位置。

对于 SageMaker Studio 笔记本电脑和 亚马逊云科技 Glue Interactive Sessions,你可以使用 sparkmagic 内核直接从笔记本上设置 Spar k 事件日志位置。

sparkmagic 内核包含一组用于通过笔记本与远程 Spark 集群进行交互的工具。它提供了神奇的( %spark %sql )命令来运行 Spark 代码、执行 SQL 查询以及配置 Spark 设置,例如执行器内存和内核。

对于 SageMaker Processing 作业,你可以直接从 SageMaker Python SDK 中配置 Spark 事件日志的位置。

有关其他信息,请参阅 亚马逊云科技 文档:

  • 有关 SageMaker 处理的信息,请参阅 PysparkProcessor
  • 有关 亚马逊云科技 Glue 互动会话的信息,请参阅 配置 Spark 用户界面(控制台)
  • 有关 Amazon EMR,请参阅 配置输出位置

你可以选择生成的网址来访问 Spark 用户界面。

以下屏幕截图显示了 Spark 用户界面的示例。

你可以在 Studio 系统终端中使用 sm-spark-cli 状态 命令来检查 Spark 历史服务器的状态

你也可以在需要时停止 Spark 历史服务器。

为 SageMaker Studio 域中的用户自动安装 Spark 用户界面

作为 IT 管理员,您可以使用 生命周期 配置为 SageMaker Studio 用户自动安装。 可以为 SageMaker Studio 域下的所有用户配置文件或特定用户配置文件执行此操作。有关更多详情,请参阅 使用生命周期 配置 自定义 Amazon SageMaker Studio

您可以通过 install-history-server.sh 脚本创建生命周期配置并将其附加到现有的 SageMaker Studio 域。将针对域中的所有用户配置文件进行安装。

在配置了 亚马逊云科技 命令行接口 (亚马逊云科技 CLI) 和相应权限的终端上,运行以下命令:

curl -LO https://github.com/aws-samples/amazon-sagemaker-spark-ui/releases/download/v0.1.0/amazon-sagemaker-spark-ui-0.1.0.tar.gz
tar -xvzf amazon-sagemaker-spark-ui-0.1.0.tar.gz

cd amazon-sagemaker-spark-ui-0.1.0/install-scripts

LCC_CONTENT=`openssl base64 -A -in install-history-server.sh`

aws sagemaker create-studio-lifecycle-config \
	--studio-lifecycle-config-name install-spark-ui-on-jupyterserver \
	--studio-lifecycle-config-content $LCC_CONTENT \
	--studio-lifecycle-config-app-type JupyterServer \
	--query 'StudioLifecycleConfigArn'

aws sagemaker update-domain \
	--region {YOUR_AWS_REGION} \
	--domain-id {YOUR_STUDIO_DOMAIN_ID} \
	--default-user-settings \
	'{
	"JupyterServerAppSettings": {
	"DefaultResourceSpec": {
	"LifecycleConfigArn": "arn:aws:sagemaker:{YOUR_AWS_REGION}:{YOUR_STUDIO_DOMAIN_ID}:studio-lifecycle-config/install-spark-ui-on-jupyterserver",
	"InstanceType": "system"
	},
	"LifecycleConfigArns": [
	"arn:aws:sagemaker:{YOUR_AWS_REGION}:{YOUR_STUDIO_DOMAIN_ID}:studio-lifecycle-config/install-spark-ui-on-jupyterserver"
	]
	}}'

Jupyter Server 重启后,Spark 用户界面和 sm-spark -cli 将在你的 SageMak er Studio 环境中可用。

清理

在本节中,我们将向您展示如何手动或自动清理 SageMaker Studio 域中的 Spark 用户界面。

手动卸载 Spark 用户界面

要在 SageMaker Studio 中手动卸载 Spark 用户界面,请完成以下步骤:

  1. 在 SageMaker Studio 启动器 中选择 “ 系统终端 ”。

  1. 在系统终端中运行以下命令:
cd amazon-sagemaker-spark-ui-0.1.0/install-scripts

chmod +x uninstall-history-server.sh
./uninstall-history-server.sh

自动卸载所有 SageMaker Studio 用户个人资料的 Spark 用户界面

要自动卸载 SageMaker Studio 中所有用户个人资料的 Spark 用户界面,请完成以下步骤:

  1. 在 SageMaker 控制台上, 在导航窗格中选择 域名 ,然后选择 SageMaker Studio 域名。

  1. 在域详细信息页面上,导航到 环境 选项卡。
  2. 在 SageMaker Studio 上选择 Spark 用户界面的生命周期配置。
  3. 选择 “ 分离 ”。

  1. 删除并重新启动 SageMaker Studio 用户配置文件的 Jupyter 服务器应用程序。

结论

在这篇文章中,我们分享了一个解决方案,你可以用它在 SageMaker Studio 上快速安装 Spark 用户界面。借助 SageMaker 上托管的 Spark UI,机器学习 (ML) 和数据工程团队可以使用可扩展的云计算从任何地方访问和分析 Spark 日志,并加快项目交付。IT 管理员可以标准化并加快云端解决方案的配置,并避免机器学习项目的自定义开发环境激增。

本文中显示的所有代码都可以在 GitHub存储库 中找到 。


作者简介

Giuseppe Angelo Porcel li 是亚马逊网络服务的首席机器学习专家解决方案架构师。凭借多年的软件工程和机器学习背景,他与任何规模的客户合作,了解他们的业务和技术需求,设计能够充分利用 亚马逊云科技 云和亚马逊机器学习堆栈的 AI 和 ML 解决方案。他曾参与过不同领域的项目,包括 mLOP、计算机视觉和 NLP,涉及大量 亚马逊云科技 服务。在空闲时间,朱塞佩喜欢踢足球。

Bruno Pistone 是 亚马逊云科技 的人工智能/机器学习专业解决方案架构师,总部位于米兰。他与任何规模的客户合作,帮助他们了解他们的技术需求,设计能够充分利用 亚马逊云科技 云和亚马逊机器学习堆栈的 AI 和 ML 解决方案。他的专业领域包括端到端机器学习、机器学习终端化和生成式人工智能。他喜欢与朋友共度时光,探索新地方,也喜欢去新的目的地旅行。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。