借助流水线,您可以指定要分配给驱动程序和每个执行程序的 CPU 和内存。您可以在 Cloud Data Fusion Studio 流水线中配置资源 配置。如需了解详情,请参阅管理数据流配置。
本页面提供了相关指南,让您知道应该为哪些驱动程序和执行器资源分配多少 根据您的使用场景进行配置
驱动器
由于驱动程序无法执行很多工作,因此默认配备 1 个 CPU 和 2 GB 内存,这足以运行大多数流水线。对于包含多个阶段或大型架构的流水线,您可能需要增加内存。如并行处理 JOIN 操作中所述,如果流水线执行内存联接,则内存数据集也需要适合驱动程序的内存。
Executor
请考虑以下有关 CPU 和内存资源的准则。
CPU
分配给执行程序的 CPU 数量决定了执行程序可以并行运行的任务数量。每个数据分区都需要一个任务来处理。在大多数情况下,最简单的做法是将 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
设置控制,默认为 384m。这意味着,YARN 为每个执行程序预留的内存量高于在流水线资源配置中设置的数量。例如,如果您将执行器内存设置为 2048m,Spark 会将 384m 加到该数字上,并向 YARN 请求 2432m 的容器。除此之外,YARN 会将请求编号向上取整
yarn.scheduler.increment-allocation-mb
的倍数,默认为
值为 yarn.scheduler.minimum-allocation-mb
。如果设为 512,YARN
将 2432 米四舍五入到 2560 米。如果该值设为 1024,YARN 会将
2,432 米至 3,072 米在确定
集群中的每个工作器节点