Apache spark 谷歌数据流vs Apache Spark

Apache spark 谷歌数据流vs Apache Spark,apache-spark,google-cloud-dataflow,distributed-computing,google-cloud-ml,Apache Spark,Google Cloud Dataflow,Distributed Computing,Google Cloud Ml,我正在调查谷歌数据流和Apache Spark,以确定哪种解决方案更适合我们的大数据分析业务需求 我发现Spark平台中有Spark SQL和MLlib可以进行结构化数据查询和机器学习 我想知道Google数据流平台中是否有相应的解决方案?我已经尝试了这两种解决方案: Dataflow还很年轻,使用它进行ML并不是“现成”的解决方案(即使您可以在转换中实现算法),您可以将流程数据输出到云存储,然后使用其他工具读取 建议使用Spark,但您必须自己管理集群。 然而,有一个很好的选择:谷歌数据处理

我正在调查谷歌数据流Apache Spark,以确定哪种解决方案更适合我们的大数据分析业务需求

我发现Spark平台中有
Spark SQL
MLlib
可以进行结构化数据查询和机器学习

我想知道Google数据流平台中是否有相应的解决方案?

我已经尝试了这两种解决方案:

Dataflow还很年轻,使用它进行ML并不是“现成”的解决方案(即使您可以在转换中实现算法),您可以将流程数据输出到云存储,然后使用其他工具读取

建议使用Spark,但您必须自己管理集群。 然而,有一个很好的选择:谷歌数据处理


您可以使用spark开发分析工具,并使用一个命令在集群上部署它们,dataproc将管理集群本身,而无需调整配置。

如果您可以对特定用例进行一些扩展,这将有所帮助。在“大数据分析”方面,您想要完成什么?简短的回答是。。。视情况而定:-)

下面是一些与Google Cloud Dataflow诉有关的要点。Spark和Hadoop先生

  • 资源管理:云数据流是一个完全按需执行的环境。具体地说,当您在数据流中执行作业时,只会根据需要为该作业分配资源。作业之间不存在资源共享/争用。与Spark或MapReduce集群相比,您通常会部署一个X节点集群,然后提交作业,然后跨作业调整节点资源。当然,您可以构建和拆除这些集群,但是数据流模型是面向与资源管理相关的免提开发人员操作的。如果想要优化资源使用以满足作业需求,那么Dataflow是一个可靠的模型,可以控制成本,几乎可以忽略资源调优。如果你喜欢多租户风格的集群,我建议你看看Google Cloud Dataproc,因为它提供了按需集群管理方面,如数据流,但重点关注类Hadoop工作负载,如MR、Spark、Pig等等

  • 交互性:目前云数据流不提供交互模式。这意味着,一旦提交作业,工作资源将绑定到已提交的图表,并且大部分数据将根据需要加载到资源中。如果您希望通过内存中的RDD将数据加载到集群中,然后动态执行查询,那么Spark可能是一个更好的模型。挑战在于,随着数据大小和查询复杂性的增加,您将不得不处理devOps。现在,如果您的大多数查询都可以用SQL语法表示,那么您可能需要查看BigQuery。BigQuery提供了数据流的“按需”方面,使您能够以交互方式执行对海量数据(如PB)的查询。在我看来,BigQuery最大的优点是您不必考虑/担心硬件分配来处理数据大小。这意味着随着数据量的增长,您不必考虑硬件(内存和磁盘大小)配置

  • 编程模型:与经典的MapReduce模型相比,Dataflow的编程模型在功能上有偏差。Spark和Dataflow在API原语方面有许多相似之处。需要考虑的事项:1)数据流的主要编程语言是Java。有一个Python SDK正在开发中。Dataflow Java SDK是开源的,已经移植到Scala。如今,Spark在GraphX、Streaming、Spark SQL和ML方面有更多的SDK界面选择。2)Dataflow是基于批处理和流式DAG开发的统一编程模型。其目标是消除在批处理和流式模型之间切换时的复杂性和成本切换。同一图形可以在任一模式下无缝运行。3) 如今,云数据流不支持基于聚合/迭代的图形执行。如果你需要像MLib这样的功能,那么Spark就是你的选择。记住,这就是今天的情况

  • 流和窗口:Dataflow(构建在统一编程模型之上)被设计成一个高度可靠、持久和可扩展的流执行环境。Dataflow和Spark之间的一个关键区别是,Dataflow使您能够根据数据的真实事件时间轻松地处理数据,而不是仅在数据到达图形时处理数据。您可以根据事件时间或到达时间将数据窗口化为固定窗口、滑动窗口、会话窗口或自定义窗口。数据流还提供触发器(应用于Windows),使您能够控制如何处理延迟到达的数据。Net您拨入正确性控制级别,以满足您分析的需要。例如,假设您有一个与100个边缘节点交互的移动游戏。这些节点创建10000个与游戏相关的秒级事件。假设一组节点无法与后端流分析系统通信。在数据流的情况下,一旦数据到达,您就可以根据查询正确性需求来控制处理数据的方式。Dataflow还提供了在流作业运行时升级流作业的功能。例如,假设您在转换中发现了一个逻辑错误。您可以在不丢失现有窗口状态的情况下升级飞行中作业。Net您可以让您的业务继续运行

净额: -如果您确实主要从事ETL风格的工作(过滤、成型、连接等)或批处理风格的MapReduce,那么如果您希望使用最小的devOps,那么数据流是一条很好的途径。
-如果您需要实现ML样式的图形,那么可以使用Spark路径并尝试使用Dataproc -如果您正在执行ML,并且首先需要执行ETL来清理培训数据,那么可以使用Dataflow和Dataproc实现混合 -如果你需要交互性,Spark是sol