资源管理

通过流水线,您可以指定要提供给驱动程序的 CPU 和内存,以及 Executor。您可以在 Cloud Data Fusion Studio 流水线中配置资源 配置。如需了解详情,请参阅管理流水线配置

本页面提供了相关指南,让您知道应该为哪些驱动程序和执行器资源分配多少 根据您的使用场景进行配置

驱动器

由于驱动程序不会执行很多工作,因此默认值为 1 CPU 和 2 GB 内存足以运行大多数流水线。您可能需要增加 包含多个阶段或大型架构的流水线如 并行处理 JOIN(如果流水线在内存中执行) 联接,内存中数据集也需要适合驱动程序的内存。

Executor

请考虑以下有关 CPU 和内存资源的准则。

CPU

分配给执行器的 CPU 数量决定了 Executor 可以并行运行。每个数据分区都需要一个任务 过程。在大多数情况下,最简单的做法是将 CPU 数量设置为 1, 而是专注于调整内存。

内存

对于大多数流水线,4 GB 的执行器内存足以成功运行 流水线。通过以下方法完成了严重偏差的数 TB 联接 4 GB 执行器内存。可以通过 但这需要深入了解 数据和流水线

Spark 将内存分为几个部分。部分为 Spark 预留 另一个用于执行和存储。

默认情况下,存储和执行部分约占总内存用量的 60% 内存。Spark 的 spark.memory.fraction configuration 属性(默认值为 0.6) 控制此百分比此容量适用于大多数工作负载, 通常无需调整

“存储和执行”部分进一步划分成多个单独的空间, 存储和执行。默认情况下,这些聊天室的大小相同,但您可以 您可以通过将 spark.memory.storageFraction(默认为 0.5)设为 控制预留用于存储的空间百分比。

存储空间用于存储缓存的数据。执行空间存储有 shuffle、join、 排序和汇总数据如果“执行”部分中有多余的空间 Spark 可以使用部分资源来存储数据。不过,执行数据绝不会 使用任何存储空间。

如果您知道自己的流水线没有缓存任何数据,则可以减少所占用的存储空间。 为执行要求留出更多空间。

需要考虑的要点:YARN 容器内存

执行器内存设置可控制分配给 执行器。Spark 为堆外内存添加了额外的内存量, 由 spark.executor.memoryOverhead 设置控制,该值默认为 3.84 米这意味着 YARN 为每个执行器预留的内存量 高于流水线资源配置中设置的数字。例如: 如果您将执行器内存设置为 2048m,Spark 会在该数字上增加 384m 并向请求发送 384m 内存, YARN,适用于 2432m 容器。除此之外,YARN 会将请求编号向上取整 yarn.scheduler.increment-allocation-mb 的倍数,默认为 值为 yarn.scheduler.minimum-allocation-mb。如果设为 512,YARN 将 2432 米四舍五入到 2560 米。如果该值设为 1024,YARN 会将 2,432 米至 3,072 米在确定 每个工作器节点的名称