我最近使用Dataflow进行数据的批处理,但由于IO错误("IOError:设备上没有剩余空间"(而导致管道停止。
工作节点上的磁盘扩展解决了这个问题,但要处理的数据量不是很大,磁盘不太可能耗尽。
因此,我想知道Dataflow是如何工作的,以便更好地了解该事件。
我的问题如下。
- 云数据流的架构是什么?我想了解它的体系结构和文档
- 数据流作业在启动之前的流程是什么
我的猜测是,管道和作业在managed Kubernetes集群上进行管理,作业在用户的VM实例上执行,因为数据流日志包括kubelet和docker日志。
如有任何信息,我们将不胜感激。
- 云数据流的架构是什么
谷歌云数据流是Apache Beam运行程序之一,它构建在谷歌计算引擎(GCE(之上,即当您运行数据流作业时,它在GCE实例上执行。在启动作业期间,Apache Beam SDK会安装在每个worker以及您指定的其他库上,然后执行它。对于Dataflow作业,您可以指定GCE虚拟机的类型以及硬盘的大小当然,根据数据处理,VM的工作人员数量可能会在一段时间内发生变化。
还有一个名为Dataflow Shuffle的功能,可用于Shuffle阶段,在GroupByKey之类的转换中,组合在托管服务上执行(当然,底部总是有一些虚拟机,但这是隐藏的(,而不是Dataflow worker虚拟机。这是洗牌可以明显更快。
- 数据流作业启动前的流程是什么
如果您想了解数据流作业的流程,我建议您浏览此链接。
附加信息
如果您想了解Apache Beam的编程模型,只需单击此处并浏览即可。
然后,谷歌云添加了一个新的多语言数据流(Runner v2(管道,该管道由新的、更快的架构支持。如果你想了解Runner v2,只需点击此处并浏览即可。
请找到以下所有链接:
- https://cloud.google.com/dataflow/docs/guides/deploying-a-pipeline
- https://cloud.google.com/dataflow/docs/concepts/beam-programming-model
- https://cloud.google.com/blog/products/data-analytics/multi-language-sdks-for-building-cloud-pipelines