Cloud Dataflow 的工作原理以及 Dataflow 作业的管理方式

How Cloud Dataflow works and how Dataflow Job is managed

我最近使用 Dataflow 对数据进行批处理,遇到了由于 IO 错误(“IOError: No space left on device”)导致的管道停止。

worker节点扩容解决了问题,但是处理的数据量不是很大,不太可能会耗尽磁盘。

因此,我想知道Dataflow是如何工作的,以便更好地了解事件。

我的问题如下

我的猜测是管道和作业是在 Managed Kubernetes 集群上管理的,而作业是在用户的 VM 实例上执行的,因为数据流日志包括 kubelet 和 docker 日志。

如有任何信息,我们将不胜感激。

  1. Cloud Dataflow 的架构是什么?

Google Cloud DataflowApache Beam 运行 之一,它建立在Google Compute Engine(GCE),即当您 运行 数据流作业时,它在 GCE 实例 上执行.在作业启动期间,Apache Beam SDK 安装在每个 worker 上以及您指定的其他库,然后执行。对于数据流作业,您可以指定 GCE 虚拟机的类型以及硬盘的大小。 当然,根据数据处理的不同,VM workers 的数量可能会随时间变化

还有一个叫做Dataflow Shuffle的特性可以用于shuffle阶段,在像GroupByKey这样的转换中,结合执行在 托管服务 上(当然底部总是有一些 VM,但那是对你隐藏的 ) 而不是 Dataflow worker VM。这是随机播放 更快

  1. 数据流作业启动前的流程是什么?

如果您想了解 Dataflow 作业的流程,我建议您阅读此link

附加信息

如果您想了解 Apache Beam 编程模型 ,只需单击 here 并浏览它。

然后,Google Cloud 添加了一个新的 多语言 数据流 (Runner v2) 管道,由新的,更快的架构。如果您想探索 Runner v2,只需单击 here 并浏览它。

请在下面找到所有链接:

  1. https://cloud.google.com/dataflow/docs/guides/deploying-a-pipeline
  2. https://cloud.google.com/dataflow/docs/concepts/beam-programming-model
  3. https://cloud.google.com/blog/products/data-analytics/multi-language-sdks-for-building-cloud-pipelines