Dataflow Shuffle 是 Dataflow 转换(例如 GroupByKey
、CoGroupByKey
和 Combine
)背后的基础操作。Dataflow Shuffle 操作能够以可伸缩、高效且可容错的方式,按键对数据进行分区和分组。Dataflow Shuffle 功能(仅适用于批处理流水线)可将 shuffle 操作移出工作器虚拟机并移入 Dataflow 服务后端。
默认情况下,批量作业使用 Dataflow Shuffle。
Dataflow Shuffle 的优点
基于服务的 Dataflow Shuffle 具有以下优点:
- 可以缩短绝大多数流水线作业类型的批处理流水线的执行时间。
- 可减少在工作器虚拟机上使用的 CPU、内存和 Persistent Disk 存储空间资源。
- 可实现更好的横向自动扩缩性能,因为虚拟机不再保留任何 shuffle 数据,因此可以更早地缩容。
- 可提升容错能力;采用这项功能之后,即使保留 Dataflow Shuffle 数据的虚拟机健康状况不佳,也不会导致整个作业失败(未采用此功能时可能就会失败)。
减少的工作器资源主要是通过将 shuffle 工作负载分流到 Dataflow 服务实现的。因此,使用 Dataflow Shuffle 会产生一笔相关费用。执行时间可能因具体运行情况而异。如果您运行的流水线有重要期限,我们建议在期限之前分配足够的缓冲时间。
使用 Dataflow Shuffle
此功能适用于支持 Dataflow 的所有区域。如要查看可用位置,请参阅 Dataflow 位置。如果使用 Dataflow Shuffle,则工作器必须部署在 Dataflow 作业所在的区域。
如果您对流水线使用 Dataflow Shuffle,请勿指定 zone
流水线选项。而应指定 region
并将其值设置为其中一个可用区域。Dataflow 会自动选择指定区域中的可用区。如果您指定了 zone
流水线选项并将其设置为可用区域之外的一个可用区,则 Dataflow 会报告错误。如果您设置的 region
和 zone
的组合不兼容,则您的作业无法使用 Dataflow Shuffle。
区域之间可能存在性能差异。
每个批量作业的默认启动磁盘大小为 25 GB。对于某些批量作业,您可能需要修改磁盘大小。请考虑以下事项:
- 工作器虚拟机将 25 GB 磁盘空间的一部分用于存储操作系统、二进制文件、日志和容器。使用 Dataflow Shuffle 时,那些占用大量磁盘空间且超出剩余磁盘容量的作业可能会失败。
- 受限于小型磁盘的性能,使用大量磁盘 I/O 的作业的执行速度可能很慢。如需详细了解不同大小磁盘之间的性能差异,请参阅 Compute Engine Persistent Disk 性能。
如需为 Dataflow Shuffle 作业指定较大的磁盘大小,您可以使用 --disk_size_gb
参数。