Press "Enter" to skip to content

在Amazon SageMaker Studio上托管Spark UI

Amazon SageMaker提供了几种使用Apache Spark运行分布式数据处理作业的方法,Apache Spark是一种流行的用于大数据处理的分布式计算框架。

您可以通过连接SageMaker Studio笔记本和AWS Glue交互式会话,从Amazon SageMaker Studio中交互式地运行Spark应用程序,并使用无服务器集群运行Spark作业。通过交互式会话,您可以选择Apache Spark或Ray来轻松处理大型数据集,无需担心集群管理。

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

最后,您可以通过将Studio笔记本与Amazon EMR集群连接,或在Amazon Elastic Compute Cloud(Amazon EC2)上运行您的Spark集群来运行Spark应用程序。

所有这些选项都允许您生成和存储Spark事件日志,并通过名为Spark UI的基于Web的用户界面对其进行分析。Spark UI运行一个Spark History Server,用于监视Spark应用程序的进度、跟踪资源使用情况并调试错误。

在本文中,我们分享了在SageMaker Studio上安装和运行Spark History Server的解决方案,并直接从SageMaker Studio IDE访问Spark UI,以分析由不同的AWS服务(AWS Glue交互式会话、SageMaker Processing作业和Amazon EMR)生成并存储在Amazon Simple Storage Service(Amazon S3)存储桶中的Spark日志。

解决方案概述

该解决方案将Spark History Server集成到SageMaker Studio的Jupyter Server应用程序中。这样用户就可以直接从SageMaker Studio IDE访问Spark日志。集成的Spark History Server支持以下功能:

  • 访问由SageMaker Processing Spark作业生成的日志
  • 访问由AWS Glue Spark应用程序生成的日志
  • 访问由自管理的Spark集群和Amazon EMR生成的日志

还提供了一个名为sm-spark-cli的实用命令行界面(CLI),用于从SageMaker Studio系统终端与Spark UI进行交互。sm-spark-cli使得在不离开SageMaker Studio的情况下管理Spark History Server成为可能。

在Amazon SageMaker Studio上托管Spark UI 四海 第1张

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

  • 为SageMaker Studio用户配置文件或SageMaker Studio共享空间安装Spark
  • 为用户配置文件或共享空间安装sm-spark-cli

在SageMaker Studio域中手动安装Spark UI

要在SageMaker Studio上托管Spark UI,请完成以下步骤:

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

在Amazon SageMaker Studio上托管Spark UI 四海 第2张

  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-cli启动Spark UI,并通过运行以下代码从Web浏览器访问它:

sm-spark-cli start s3://DOC-EXAMPLE-BUCKET/<SPARK_EVENT_LOGS_LOCATION>

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

对于SageMaker Studio笔记本和AWS Glue交互式会话,您可以通过使用sparkmagic内核从笔记本直接设置Spark事件日志位置。

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

在Amazon SageMaker Studio上托管Spark UI 四海 第3张

对于SageMaker Processing作业,您可以通过SageMaker Python SDK直接配置Spark事件日志位置。

在Amazon SageMaker Studio上托管Spark UI 四海 第4张

有关详细信息,请参阅AWS文档:

  • 有关SageMaker Processing的信息,请参阅PySparkProcessor
  • 有关AWS Glue交互式会话的信息,请参阅配置Spark UI(控制台)
  • 有关Amazon EMR的信息,请参阅配置输出位置

在Amazon SageMaker Studio上托管Spark UI 四海 第5张

您可以选择生成的URL来访问Spark UI。

在Amazon SageMaker Studio上托管Spark UI 四海 第6张

下面的截图显示了Spark UI的示例。

在Amazon SageMaker Studio上托管Spark UI 四海 第7张

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

在Amazon SageMaker Studio上托管Spark UI 四海 第8张

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

在Amazon SageMaker Studio上托管Spark UI 四海 第9张

自动化SageMaker Studio域中用户的Spark UI安装

作为IT管理员,您可以使用生命周期配置自动安装SageMaker Studio用户的安装。这可以针对SageMaker Studio域下的所有用户配置文件或特定用户配置文件完成。有关更多详细信息,请参阅使用生命周期配置自定义Amazon SageMaker Studio。

您可以从install-history-server.sh脚本创建一个生命周期配置,并将其附加到现有的SageMaker Studio域。安装将在域中的所有用户配置文件上运行。

从配置了AWS命令行界面(AWS 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服务器重新启动后,Spark UI和sm-spark-cli将在您的SageMaker Studio环境中可用。

清理

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

手动卸载Spark UI

要在SageMaker Studio中手动卸载Spark UI,请完成以下步骤:

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

在Amazon SageMaker Studio上托管Spark UI 四海 第10张

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

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

自动卸载所有SageMaker Studio用户配置文件中的Spark UI

要自动卸载SageMaker Studio中所有用户配置文件中的Spark UI,请完成以下步骤:

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

在Amazon SageMaker Studio上托管Spark UI 四海 第11张

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

在Amazon SageMaker Studio上托管Spark UI 四海 第12张

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

在Amazon SageMaker Studio上托管Spark UI 四海 第13张

结论

在本文中,我们分享了一个解决方案,您可以使用该解决方案在SageMaker Studio上快速安装Spark UI。借助在SageMaker上托管的Spark UI,机器学习(ML)和数据工程团队可以使用可扩展的云计算来从任何地方访问和分析Spark日志,并加快项目交付速度。IT管理员可以标准化和加快在云中提供解决方案,并避免为ML项目创建自定义开发环境。

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

Leave a Reply

Your email address will not be published. Required fields are marked *