本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 笔记本实例中创建多个笔记本文件。当您打开每个笔记本文件并运行段落时,将通过 SparkMagic 在 Spark 集群上针对每个笔记本文件启动一个 Livy 会话。每个 Livy 会话对应于一项 Spark 任务。
Amazon Glue 开发终端节点和 SageMaker 笔记本的默认行为
Spark 任务基于 Spark 配置
默认情况下,Spark 会根据 Spark 集群配置将集群资源分配给 Livy 会话。在 Amazon Glue 开发终端节点中,集群配置取决于工作线程类型。下表阐述了每个工作线程类型的常见配置。
Standard | 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
)和工作线程类型结合自动计算得出的。
Standard | 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 会话。
注意
有关如何在不同使用案例中分配资源,以及如何设置配置以修改行为的详细信息,请参阅 高级配置:在多个用户之间共享开发终端节点。