Apache Beam DirectRunner与“常规”并行进程

我目前有一条在GCP上运行的管道。整个过程都是使用熊猫编写的,以操纵CSV并进行一些转换以及来自外部来源的辅助输入。 (它利用bigquery和存储API)。事实是,它在32vCPUs / 120GB RAM Compute Engine实例(VM)上运行,并且使用python的多处理库进行简单的并行处理。当前,我们正在考虑切换到Dataflow,我想知道的是:如果要使用Beam的DirectRunner来实现相同的管道,我应该如何期望性能与当前实现相比?是更快还是更慢,为什么? DirectRunner会充分利用所有机器资源还是受到某种限制?

谢谢!

a316190862 回答:Apache Beam DirectRunner与“常规”并行进程

您的问题很广泛。但是,我会尽力为您提供一些参考。比较DirectRunner和DataflowRunner很难。

  • DirectRunner在当前VM上启动管道,并使用此VM的功能。这是您的VM,您必须对其进行设置,修补,小心释放磁盘/分区/日志文件,(...)
  • DataflowRunner启动到托管平台的管道。数据流根据其指标和“预测”(此处没有ML!)选择按比例增加或减少VM的数量,以尽快执行您的管道。您可以设置小型VM(例如1个vCPU),然后Dataflow会生成大量VM,或者设置较大的VM,也许该Dataflow仅生成1个,因为它足以满足管道需求。

Pro提示:VM带宽限制为每个vCPU 2Gbs,最多8个vCPU。解决网络瓶颈并明智地选择VM大小(我建议通常使用4个或8个vCPU的VM)

一方面,您只需要管理一个VM,另一方面,您只需设置参数,然后让Dataflow管理和扩展管道即可。

我不知道您的增长前景,但是垂直可扩展性(在单个VM上添加更多vCPU /内存)一天可能会达到极限。使用Dataflow,它具有弹性,您不必为此担心。除了服务器管理和修补程序。

最后,回答您的问题“更快或更慢”,太难回答了……数据流,如果在多个VM上运行,将增加网络延迟,数据流内部管理开销,但可以扩展以并行使用更多vCPU在某些时候将其与您当前的虚拟机进行比较。您的管道可以利用这种并行性吗?它解决了您当前的一些瓶颈吗?在我这一边太难回答了。

本文链接:https://www.f2er.com/3121069.html

大家都在问