跳至内容

如何配置 SageMaker AI Notebook 实例,以使用 AWS Glue 交互式会话、Sparkmagic 内核或 PySparkProcessor 来运行大数据工作负载?

3 分钟阅读
0

我想配置一个 Amazon SageMaker AI Notebook 实例,以使用 AWS Glue 交互式会话、PySparkProcessor 或 Sparkmagic 内核来运行大数据工作负载。

解决方法

要配置 SageMaker AI Notebook 实例以运行 Spark 和 PySpark 工作负载,请完成以下解决方法之一。

为 Notebook 实例配置 AWS Glue 交互式会话

要使用无服务器选项运行 Apache Spark 和 PySpark 工作负载,请为您的 Notebook 实例配置 AWS Glue 交互式会话。启动 Notebook 实例时,交互式会话会创建 PySpark 内核和 Spark 内核。然后,您可以从 Jupyter 或 JupyterLab 应用程序的“启动程序”选项卡中使用已安装的内核之一。

为 AWS Glue 交互式会话授予权限

完成以下步骤:

  1. 打开 AWS Identity and Access Management (IAM) 控制台
  2. 在导航窗格中的 Access management(访问管理)下,选择 Roles(角色)。
  3. 选择您用于 SageMaker AI Notebook 实例的执行角色
  4. 在 JSON 编辑器中创建以下内联自定义 IAM 策略
    {
        "Version": "2012-10-17",		 	 	
        "Statement": [
            {
                "Sid": "uniqueStatementId",
    
                "Effect": "Allow",
                "Action": [
    	            "iam:GetRole",
                    "iam:PassRole",
                    "sts:GetCallerIdentity"
                ],
                "Resource": "YOUR-IAM-ROLE-ARN"
            }
        ]
    }
    **注意:**请将 YOUR-IAM-ROLE-ARN 替换为您的 Notebook 实例的 IAM 执行角色的 Amazon Resource Name (ARN)。
  5. 要向 IAM 角色授予 AWS Glue 权限,请从 Add Permissions(添加权限)下拉菜单中选择 Attach policies(附加策略)。然后,搜索 AwsGlueSessionUserRestrictedServiceRole,并选择 Attach policies(附加策略)。
  6. 允许 AWS Glue 代入 IAM 角色,请选择 Trust relationships(信任关系)选项卡,然后将 glue.amazonaws.com 添加到服务列表中。确认您的信任策略与以下示例类似:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "",
                "Effect": "Allow",
                "Principal": {
                    "Service": [
                        "sagemaker.amazonaws.com",
                        "glue.amazonaws.com"
                    ]
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }

在 Notebook 实例中安装 AWS Glue 交互式会话内核

完成以下步骤:

  1. 要在启动时自动安装 AWS Glue 内核,请创建以下生命周期配置脚本

    #!/bin/bash
    
    set -e
    
    # Start conda environment
    sudo -u ec2-user -i <<'EOF'
    
    # Activate conda default environment
    source /home/ec2-user/anaconda3/bin/activate JupyterSystemEnv
    
    # Install/upgrade packages for boto3 and aws-glue-sessions
    pip3 install --upgrade jupyter boto3 aws-glue-sessions
    echo "AWS Glue Sessions Installed Successfully"
    
    # Install Glue kernels
    install-glue-kernels
    echo "Glue Kernels Installed Successfully"
    
    # Deactivate conda environment
    conda deactivate
    
    EOF
    # Ensure script reports success
    echo "Lifecycle configuration complete!"
    systemctl restart jupyter-server
    sudo touch /home/ec2-user/glue_ready
  2. 导航到您的 Notebook 实例,然后确认该实例未处于 InService 状态。

  3. 要附加生命周期配置脚本,请选择 Notebook instance settings(Notebook 实例设置),然后选择 Edit(编辑)。

  4. Additional configuration(其他配置)下,从 Lifecycle configuration(生命周期配置)下拉列表中选择您的生命周期配置脚本。

  5. 选择 Update notebook instance(更新 Notebook 实例)。
    **注意:**Notebook 实例可能需要几分钟才能完成更新。

  6. 启动您的 Notebook 实例。

  7. 打开 JupyterLab,然后选择 Launcher(启动程序)选项卡。

  8. 选择 AWS Glue Spark 或 AWS Glue PySpark 内核来运行您的数据工作负载。
    **注意:**处理完工作负载后,请在 JupyterLab 中关闭内核,以免在 AWS Glue 中继续产生费用

有关如何配置 AWS Glue 交互式会话的详细信息,请参阅为 Jupyter 和 AWS Glue Studio Notebook 配置 AWS Glue 交互式会话

配置 PySparkProcessor 以处理 SageMaker AI 作业

您可以使用 PySparkProcessor 将 PySpark 脚本作为处理作业来运行。有关详细信息,请参阅 SageMaker Read the Docs 网站上的 PySparkProcessor

**注意:**PySparkProcessor 使用预构建的 SageMaker AI Spark 容器。您只能配置 framework_versionpy_versioncontainer_version 参数。

有关您可以使用的 Notebook 示例,请参阅 GitHub 网站上的 sagemaker-spark-processing.ipynb

为 SageMaker AI Sparkmagic 内核配置 Amazon EMR 后端集群

Sparkmagic 内核需要后端 Amazon EMR 集群。如果您在未配置后端 Amazon EMR 集群的情况下使用 Sparkmagic 内核,则会收到以下错误消息:

“The code failed because of a fatal error: Error sending http request and maximum retry encountered...”

要设置在 Amazon EMR 上运行的 Spark 集群以连接到您的 Notebook 实例,请参阅 Build Amazon SageMaker AI notebooks backed by Spark in Amazon EMR(构建由 Amazon EMR 中的 Spark 提供支持的 Amazon SageMaker AI Notebook)

确认连接后,运行以下命令以升级 sagemaker-studio-analytics-extension

pip install --upgrade sagemaker-studio-analytics-extension

最新版本的 sagemaker-studio-analytics-extension 会将默认的 60 秒服务器会话超时时间覆盖为 120 秒。有关详细信息,请参阅对 Livy 连接挂起或失败问题进行故障排除

更新扩展后,启动带有 PySpark 内核的 Jupyter Notebook 并测试连接。如果连接成功,您会看到一条类似于以下内容的消息:

“Starting Spark application … SparkSession available as 'spark'”

连接后,导入 PySpark 来运行您的工作负载。

相关信息

为 AWS Glue Studio 设置 IAM 权限

通过交互式会话构建 AWS Glue 作业

AWS 官方已更新 4 个月前