集群大小调整

默认情况下,Cloud Data Fusion 使用自动扩缩作为计算配置文件。 估算工作负载的最佳集群工作器(节点)数量如下: 整个流水线的单个集群规模通常并不理想。 Dataproc 自动扩缩提供了一种 集群资源管理,并且支持集群工作器虚拟机自动扩缩。有关 请参阅自动扩缩

计算配置页面上,您可以看到配置文件列表, 核心总数列,其中包含配置文件可以拥有的 vCPU 数量上限 例如 Up to 84

如果要使用 Dataproc 计算配置文件,您可以 调整集群大小

主节点

主节点使用与集群上运行的流水线或其他应用的数量成比例的资源。如果你在 Google Cloud 中 临时集群,使用 2 个 CPU 和 8 GB 内存作为主实例 节点。如果您使用的是永久性集群,则可能需要更大的主节点 以跟上工作流程要了解您是否需要更大的主节点 可以监控节点上的内存和 CPU 使用情况。我们建议您 配备至少 2 个 CPU 和 8 GB 内存的工作器节点。如果您 配置流水线以使用更多内存量,那么必须使用 大型工作器。

为了最大限度地减少执行时间,请确保您的集群具有足够的节点,以尽可能减少并行处理。

工作器

以下各部分介绍了调整工作器节点大小的各个方面。

CPU 和内存

建议您将工作器节点的大小调整为至少 2 CPU 和 8 GB 内存。如果您将流水线配置为使用更大的内存量,请使用 大型工作器。例如,一个 4 CPU 15 GB 工作器节点 工作器将有 4 个 CPU 和 12 GB 可用于运行 YARN 容器。如果 流水线配置为运行 1 个 CPU、8 GB 执行器,YARN 为 无法为每个工作器节点运行多个容器。每个工作器节点 有额外的 3 CPU 和 4 GB,这是浪费的,因为它不能用于 运行什么工具为了最大限度地提高集群的资源利用率,您需要 YARN 内存和 CPU 数量, Spark Executor。您可以查看每个工作器为 YARN 预留了多少内存量 方法是检查 YARN 中的 yarn.nodemanager.resource.memory-mb 属性。

如果您使用的是 Dataproc,YARN 可用的内存 容器约占虚拟机内存的 75%最小 YARN 容器大小 也会根据工作器虚拟机的大小进行调整一些常见的工作器 下表给出了各种尺寸及其对应的 YARN 设置。

工作器 CPU 工作器内存 (GB) YARN 节点内存 (GB) YARN 分配内存下限 (MB)
1 4 3 256
2 8 6 512
4 16 12 1024
8 32 24 1024
16 64 51 1024

请注意,Spark 请求的内存多于执行器内存 以及请求增加金额的 YARN 轮次。对于 例如,假设您已将执行程序内存设置为 2048 MB,并且 已给定了 spark.yarn.executor.memoryOverhead 的值,则表示默认值 (共 384 MB)。这意味着 Spark 请求的数据量为 2048 MB + 384 MB YARN 将向上舍入为 YARN 的 最低分配。在 8 GB 工作器节点上运行时, 最小分配量为 512 MB,四舍五入为 2.5 GB。这个 这意味着每个工作器可以运行两个容器,从而用完 但剩余 1 GB YARN 内存(6 GB - 2.5 GB - 2.5 GB)。这意味着工作器节点实际上可以是 或者可以为执行器分配更多的内存。 在 16 GB 工作器节点上运行时,大小为 2048 MB + 1024 MB 向上舍入到 3 GB,因为 YARN 的最小分配量为 1024 MB。 这意味着每个工作器节点能够运行四个容器,所有 CPU 和 YARN 内存使用中。

为便于您了解具体情况,下表显示了推荐的工作器尺寸, 一些常见的执行器大小

执行器 CPU 执行器内存 (MB) 工作器 CPU 工作器内存 ( GB)
1 2048 4 15
1 3072 4 21
1 4096 4 26
2 8192 4 26

例如,一个 26 GB 的工作器节点相当于 20 GB 的可用内存 运行 YARN 容器所需的资源当执行器内存设置为 4 GB 时,1 GB 就是 作为开销添加,这意味着每个执行器有 5 GB 的 YARN 容器。这个 意味着工作器可以运行四个容器,而不会有任何多余的资源。 您也可以乘以 worker。例如,如果执行器内存 设置为 4096 GB,具有 8 个 CPU 和 52 GB 内存的工作器将 也运行良好。Compute Engine 虚拟机会限制虚拟机可以拥有的内存量 核心数量例如,具有 4 个核心的虚拟机必须至少 7.25 GB 内存和最多 26 GB 内存。这意味着执行器 设置为使用 1 个 CPU 和 8 GB 内存使用 2 个 CPU 和 26 GB 150 万个内存资源如果执行器被配置为使用 2 个 CPU 并且 8 GB 内存,则所有 CPU 都会被利用。

磁盘

磁盘对于某些流水线很重要,但并非所有流水线都很重要。如果您的流水线 不包含任何重排,则仅当 Spark 耗尽内存时才会使用磁盘 并且需要将数据溢出到磁盘上对于这些类型的流水线,磁盘大小和 通常不会对您的广告效果产生重大影响。如果您的 对大量数据进行重排,磁盘性能会对性能产生重要影响。如果 则建议您使用磁盘大小 至少为 1 TB,因为磁盘性能会随磁盘大小而增加。相关信息 请参阅配置磁盘以满足性能要求 要求

工作器数量

为了最大限度地缩短执行时间,您需要确保集群 足够大,可以尽可能并行运行。例如,如果 流水线来源使用 100 个分块读取数据, 集群足够大,可以同时运行 100 个执行器。

判断集群是否过小的最简单方法是查看 YARN 待处理内存大小如果您使用的是 Dataproc,则一个图表可以 可在集群详情页面上找到

如果待处理内存在较长时间内较高 您可以增加工作器数量来增加额外容量 您的集群在前面的示例中,集群应增加 约 28 GB,以确保实现最大并行级别。

增强的灵活模式 (EFM)

EFM 可让您指定在重排时仅涉及主要工作器节点 数据。由于辅助工作器不再负责中间 shuffle 从集群中移除时,Spark 作业不会遇到延迟或 错误。由于主工作器永远不会缩容,因此集群会缩容 实现更高的稳定性和效率如果您运行的是已启用 shuffle 的流水线 则建议您使用 EFM。

如需详细了解 EFM,请参阅 Dataproc 增强的灵活性模式