默认情况下,Cloud Data Fusion 使用自动扩缩作为计算配置文件。 估算工作负载的最佳集群工作器(节点)数量非常困难,整个流水线的单个集群大小通常不是理想之选。Dataproc 自动扩缩功能提供自动管理集群资源的机制,还启用了集群工作器虚拟机的自动扩缩功能。有关 请参阅自动扩缩
在计算配置页面(您可以在其中查看配置文件列表)上,有一个总核心数列,其中显示了配置文件可扩容到的最大 vCPU 数量,例如 Up to 84
。
如果要使用 Dataproc 计算配置文件,您可以 调整集群大小
主节点
主节点使用与集群上运行的流水线或其他应用的数量成比例的资源。如果您是在临时集群上运行流水线,请为主节点使用 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.nodemanager.resource.memory-mb
属性,了解每个工作器为 YARN 预留了多少内存。
如果您使用的是 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 的工作器节点上运行时,由于 YARN 最小分配量为 512 MB,因此会向上舍入为 2.5 GB。这意味着每个工作器可以运行两个容器,使用所有可用的 CPU,但会留下 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) | Worker CPU | Worker 内存 (GB) |
---|---|---|---|
1 | 2048 | 4 | 15 |
1 | 3072 | 4 | 21 |
1 | 4096 | 4 | 26 |
2 | 8192 | 4 | 26 |
例如,26 GB 的工作器节点可转换为可用于运行 YARN 容器的 20 GB 内存。将执行器内存设置为 4 GB 时,系统会添加 1 GB 作为开销,这意味着每个执行器的 YARN 容器为 5 GB。这个 意味着工作器可以运行四个容器,而不会有任何多余的资源。 您还可以乘以工作器的大小。例如,如果执行器内存 设置为 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 内存不足且需要将数据溢写到磁盘时才会使用磁盘。对于这些类型的流水线,磁盘大小和 通常不会对您的广告效果产生重大影响。如果您的 对大量数据进行重排,磁盘性能会对性能产生重要影响。如果您使用的是 Dataproc,建议您使用至少 1 TB 的磁盘大小,因为磁盘性能会随磁盘大小而增强。相关信息 请参阅配置磁盘以满足性能要求 要求。
工作器数量
为了最大限度地缩短执行时间,您需要确保集群足够大,能够尽可能并行运行。例如,如果 流水线来源使用 100 个分块读取数据, 集群足够大,可以同时运行 100 个执行器。
判断集群是否过小的最简单方法是查看 YARN 待处理内存大小如果您使用的是 Dataproc,则一个图表可以 可在集群详情页面上找到
如果待处理内存在较长时间内较高 您可以增加工作器数量来增加额外容量 您的集群在上例中,集群应增加约 28 GB,以确保实现最大并行度。
增强的灵活模式 (EFM)
借助 EFM,您可以指定在对数据进行重排时仅使用主工作器节点。由于辅助工作器不再负责中间 shuffle 从集群中移除时,Spark 作业不会遇到延迟或 错误。由于主要工作器绝不会缩容,因此集群缩容会更稳定、更高效。如果您运行的是已启用 shuffle 的流水线 则建议您使用 EFM。
如需详细了解 EFM,请参阅 Dataproc 增强的灵活性模式。