通过流水线,您可以指定要提供给驱动程序的 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 米在确定
每个工作器节点的名称