我目前有一条在GCP上运行的管道。整个过程都是使用熊猫编写的,以操纵CSV并进行一些转换以及来自外部来源的辅助输入。 (它利用bigquery和存储API)。事实是,它在32vCPUs / 120GB RAM Compute Engine实例(VM)上运行,并且使用python的多处理库进行简单的并行处理。当前,我们正在考虑切换到Dataflow,我想知道的是:如果要使用Beam的DirectRunner来实现相同的管道,我应该如何期望性能与当前实现相比?是更快还是更慢,为什么? DirectRunner会充分利用所有机器资源还是受到某种限制?
谢谢!
答案 0 :(得分:0)
您的问题很广泛。但是,我会尽力为您提供一些参考。比较DirectRunner和DataflowRunner很难。
Pro提示:VM带宽限制为每个vCPU 2Gbs,最多8个vCPU。解决网络瓶颈并明智地选择VM大小(我建议通常使用4个或8个vCPU的VM)
一方面,您只需要管理一个VM,另一方面,您只需设置参数,然后让Dataflow管理和扩展管道即可。
我不知道您的增长前景,但是垂直可扩展性(在单个VM上添加更多vCPU /内存)一天可能会达到极限。使用Dataflow,它具有弹性,您不必为此担心。除了服务器管理和修补程序。
最后,回答您的问题“更快或更慢”,太难回答了……数据流,如果在多个VM上运行,将增加网络延迟,数据流内部管理开销,但可以扩展以并行使用更多vCPU在某些时候将其与您当前的虚拟机进行比较。您的管道可以利用这种并行性吗?它解决了您当前的一些瓶颈吗?在我这一边太难回答了。