本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Glue开发终端节点如何与 SageMaker 笔记本电脑配合使用
访问开发终端节点的常见方法之一是使用 SageMaker 笔记本上的 Jupyter
以下文本流说明了每个组件的工作原理:
Amazon Glue SageMaker 笔记本:(Jupyter → SparkMagic) →(网络)→Amazon Glue 开发终端节点:(Apache Livy → Apache Spark)
在 Jupyter notebook 上运行在每个段落中编写的 Spark 脚本后,Spark 代码将通过 SparkMagic提交到 Livy 服务器,然后名为 “livy-session-N” 的 Spark 任务会在 Spark 集上运行。此任务称为 Livy 会话。Spark 任务将在笔记本会话处于活跃状态时运行。当您从笔记本中关闭 Jupyter 内核或会话超时时,Spark 任务将终止。每个笔记本(.ipynb)文件启动一个 Spark 任务。
您可以将单个Amazon Glue开发终端节点与多个 SageMaker 笔记本实例结合使用。您可以在每个笔记本实例中创建多个 SageMaker 笔记本文件。当您打开每个笔记本文件并运行段落时,将通过 Spark 集群上针对每个笔记本文件启动一个 Livy 会话 SparkMagic。每个 Livy 会话对应于一项 Spark 任务。
Amazon Glue开发终端节点和 SageMaker 笔记本电脑的默认行为
Spark 任务基于 Spark 配置
默认情况下,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 会话。
注意
有关如何在不同使用案例中分配资源,以及如何设置配置以修改行为的详细信息,请参阅高级配置:在多个用户之间共享开发终端节点。