谷歌数据流与Apache风暴

Nos*_*mus 11 distributed-computing apache-spark google-cloud-dataflow

阅读Google的Dataflow API,我的印象是它与Apache Storm的功能非常相似.通过流水线流实时数据处理.除非我完全忽略了这一点,否则我不希望在如何执行彼此写入的管道上建立桥梁,而是期待与Google不同的东西,而不是重新发明轮子.Apache Storm已经很好地放置并可用于任何编程语言.做这样的事情的真正价值是什么?

jkf*_*kff 27

感谢您对Dataflow编程模型的兴趣!确实,Dataflow和Apache Storm都支持流处理,但存在重要差异:

  • Dataflow在相同的"窗口化"API下支持批处理和流式计算,而据我所知,Storm特别是一个流式系统.

  • 用于定义计算拓扑的API在Dataflow和Storm中非常不同.Dataflow API主要模仿FlumeJava:您操纵逻辑PCollection对象(并行集合;您可以将它们视为逻辑数据集),就像您操纵真实集合一样,并根据将不同可并行操作(如ParDo)应用于其他集合的结果构建新集合集合.相反,在Apache Storm中,您可以直接从"spouts"和"bolt"构建计算网络; 我没有明确的逻辑数据集或并行操作的概念.

  • Dataflow中管道的逻辑表示允许框架执行类似于数据库系统中查询优化器所做的优化,例如避免或引入某些中间结果的实现,移动或消除逐个键操作等.可以在FlumeJava论文中看到这些优化的概述.这在批处理和流模式下都很有用.

  • Dataflow和Storm的流式计算模型之间的一致性保证是不同的.这实际上是一个引人入胜的话题!我建议阅读Millwheel论文(这是Dataflow的流媒体部分所基于的),以概述流媒体系统中的容错和一致性问题.我相信这篇论文也简要地比较了Millwheel和Storm.您可以在流媒体系统中找到关于一致性保证重要性的更广泛的讨论,以及数据流中的一致性的力量,在谈话中有你的蛋糕和吃它 - 进一步消除Lambda架构的神话.

  • 作为Google云平台的一部分,Dataflow的主要价值主张之一是零麻烦:您不需要设置集群,设置监控系统等:您只需将管道提交到云API和系统为它分配资源,使用它们执行管道,为您监控它.但这可能与您关于编程模型相似性的问题无关.