Amazon Glue 开发终端节点如何与 SageMaker 笔记本配合使用 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon Glue 开发终端节点如何与 SageMaker 笔记本配合使用

访问开发终端节点的常见方法之一是使用 SageMaker 笔记本上的 Jupyter。Jupyter 笔记本是一个开源的 Web 应用程序,广泛应用于可视化、分析和机器学习等领域。Amazon Glue SageMaker 笔记本为您提供 Amazon Glue 开发终端节点的 Jupyter 笔记本体验。在 Amazon Glue SageMaker 笔记本中,Jupyter 笔记本环境预先配置了 SparkMagic,这是一个开源 Jupyter 插件,用于将 Spark 任务提交至远程 Spark 集群。Apache Livy 是一种允许通过 REST API 与远程 Spark 集群进行交互的服务。在 Amazon Glue SageMaker 笔记本中,SparkMagic 被配置为针对运行在 Amazon Glue 开发终端节点上的 Livy 服务器调用 REST API。

以下文本流说明了每个组件的工作原理:

Amazon Glue SageMaker 笔记本:(Jupyter → SparkMagic) →(网络)→ Amazon Glue 开发终端节点:(Apache Livy → Apache Spark)

在 Jupyter 笔记本上运行在每个段落中编写的 Spark 脚本后,Spark 代码将通过 SparkMagic 提交到 Livy 服务器,然后名为“livy-session-N”的 Spark 任务会在 Spark 集群上运行。此任务称为 Livy 会话。Spark 任务将在笔记本会话处于活跃状态时运行。当您从笔记本中关闭 Jupyter 内核或会话超时时,Spark 任务将终止。每个笔记本(.ipynb)文件启动一个 Spark 任务。

您可以将单个 Amazon Glue 开发终端节点与多个 SageMaker 笔记本实例结合使用。您可以在每个 SageMaker 笔记本实例中创建多个笔记本文件。当您打开每个笔记本文件并运行段落时,将通过 SparkMagic 在 Spark 集群上针对每个笔记本文件启动一个 Livy 会话。每个 Livy 会话对应于一项 Spark 任务。

Amazon Glue 开发终端节点和 SageMaker 笔记本的默认行为

Spark 任务基于 Spark 配置运行。有多种方法可以设置 Spark 配置(例如,Spark 集群配置、SparkMagic 的配置等)。

默认情况下,Spark 会根据 Spark 集群配置将集群资源分配给 Livy 会话。在 Amazon Glue 开发终端节点中,集群配置取决于工作线程类型。下表阐述了每个工作线程类型的常见配置。

标准 G.1X G.2X
spark.driver.memory 5G 10G 20G
spark.executor.memory 5G 10G 20G
spark.executor.cores 4 8 16
spark.dynamicAllocation.enabled TRUE TRUE TRUE

Spark 执行程序的最大数量是通过将 DPU(或 NumberOfWorkers)和工作线程类型结合自动计算得出的。

标准 G.1X G.2X
Spark 执行程序的最大数量 (DPU - 1) * 2 - 1 (NumberOfWorkers - 1) (NumberOfWorkers - 1)

例如,如果您的开发终端节点有 10 个工作线程,并且工作线程类型为 G.1X,那么您将有 9 个 Spark 执行程序,整个集群将有 90G 的执行程序内存,因为每个执行程序都有 10G 的内存。

无论指定的工作线程类型如何,都将打开 Spark 动态资源分配。如果数据集足够大,Spark 可能会将所有执行程序分配给单个 Livy 会话,因为默认情况下 spark.dynamicAllocation.maxExecutors 未设置。这意味着同一开发端点上的其他 Livy 会话将等待启动新的执行程序。如果数据集很小,Spark 将能够同时将执行程序分配给多个 Livy 会话。

注意

有关如何在不同使用案例中分配资源,以及如何设置配置以修改行为的详细信息,请参阅 高级配置:在多个用户之间共享开发终端节点