Google Cloud Dataflow 和 Google Cloud Dataproc 有啥区别?
Posted
技术标签:
【中文标题】Google Cloud Dataflow 和 Google Cloud Dataproc 有啥区别?【英文标题】:What is the difference between Google Cloud Dataflow and Google Cloud Dataproc?Google Cloud Dataflow 和 Google Cloud Dataproc 有什么区别? 【发布时间】:2018-03-08 06:54:17 【问题描述】:我正在使用 Google Data Flow 来实施 ETL 数据仓库解决方案。
查看谷歌云产品,DataProc 似乎也可以做同样的事情。
DataProc 似乎也比 DataFlow 便宜一点。
有人知道 DataFlow over DataProc 的优缺点吗
为什么 google 两者都提供?
【问题讨论】:
【参考方案1】:Cloud Dataflow 是一种无服务器数据处理服务,可运行使用 Apache Beam 库编写的作业。当您在 Cloud Dataflow 上运行作业时,它会启动一个虚拟机集群,将作业中的任务分配给虚拟机,并根据作业的执行方式动态扩展集群。它甚至可以更改处理管道中的操作顺序以优化您的工作。
所以用例是各种数据源/数据库之间的 ETL(提取、传输、加载)作业。例如,将大文件从 Cloud Storage 加载到 BigQuery。
流式处理基于订阅 PubSub 主题,因此您可以收听实时事件(例如来自某些 IoT 设备),然后进行进一步处理。
Dataflow 有趣的具体用例是 Dataprep。 Dataprep 是 GCP 上的云工具,用于探索、清理、整理(大型)数据集。当您定义要对数据执行的操作(如格式化、加入等)时,作业会在 Dataflow 的后台运行。
Cloud Dataflow 还提供基于“模板”创建作业的能力,这有助于简化参数值不同的常见任务。
Dataproc 是一项托管的 Spark 和 Hadoop 服务,可让您利用开源数据工具进行批处理、查询、流式传输和机器学习。 Dataproc 自动化可帮助您快速创建集群、轻松管理它们并通过在不需要集群时关闭集群来节省资金。花费在管理上的时间和金钱更少,您可以专注于您的工作和数据。
-
超快 - 不使用 Dataproc,可能需要 5 到 30
分钟内或通过本地创建 Spark 和 Hadoop 集群
IaaS 提供商。相比之下,Dataproc 集群启动速度很快,
缩放和关闭,每个操作都需要 90 秒
或更少,平均而言。这意味着您可以花更少的时间等待
集群和更多的实践时间来处理您的数据。
集成 — Dataproc 与其他 Google 内置集成
云平台服务,例如 BigQuery、Cloud Storage、Cloud
Bigtable、Cloud Logging 和 Cloud Monitoring,让您拥有超过
只是一个 Spark 或 Hadoop 集群——你有一个完整的数据平台。
例如,您可以使用 Dataproc 轻松 ETL
将原始日志数据直接输入 BigQuery 以进行业务报告。
托管 - 无需管理员协助即可使用 Spark 和 Hadoop 集群
管理员或特殊软件。您可以轻松地与
通过 Google Cloud Console 进行集群和 Spark 或 Hadoop 作业,
Cloud SDK 或 Dataproc REST API。当你完成一个
集群,你可以简单地把它关掉,这样你就不用花钱买一个
空闲集群。您无需担心丢失数据,因为
Dataproc 与 Cloud Storage、BigQuery 和 Cloud 集成
大表。
简单而熟悉 - 您无需学习新工具或 API 即可
使用 Dataproc,可轻松将现有项目迁移到 Dataproc
无需重新开发。 Spark、Hadoop、Pig 和 Hive 经常
更新,因此您可以更快地提高工作效率。
如果您想从现有的 Hadoop/Spark 集群迁移到云端,或利用市场上众多训练有素的 Hadoop/Spark 工程师,请选择 Cloud Dataproc;如果您信任 Google 在大规模数据处理方面的专业知识并免费获得他们的最新改进,请选择 DataFlow。
在 Dataproc 和 Dataflow 之间进行选择时需要考虑以下三个要点
配置 Dataproc - 手动配置集群 数据流 - 无服务器。自动配置集群 Hadoop 依赖项 如果处理对 Hadoop 生态系统中的工具有任何依赖关系,则应使用 Dataproc。 可移植性 Dataflow/Beam 在处理逻辑和底层执行引擎之间提供了清晰的分离。这有助于跨支持 Beam 运行时的不同执行引擎的可移植性,即相同的管道代码可以在 Dataflow、Spark 或 Flink 上无缝运行。
【讨论】:
【参考方案2】:另一个重要的区别是:
云数据处理:
在已知大小的数据集中进行数据挖掘和分析
云数据流:
管理大小不可预测的数据集
see
【讨论】:
【参考方案3】:Cloud Dataproc 和 Cloud Dataflow 都可用于数据处理,并且它们的批处理和流式处理功能存在重叠。您可以决定哪种产品更适合您的环境。
Cloud Dataproc 适用于依赖特定 Apache 大数据组件的环境: - 工具/包 - 管道 - 现有资源的技能组合
Cloud Dataflow 通常是绿地环境的首选选项: - 更少的运营开销 - 开发批处理或流式管道的统一方法 - 使用 Apache Beam - 支持跨 Cloud Dataflow、Apache Spark 和 Apache Flink 作为运行时的管道可移植性。
在此处查看更多详细信息https://cloud.google.com/dataproc/
价格比较:
DataProc
Dataflow
如果您想计算和比较更多GCP资源的成本,请参考这个urlhttps://cloud.google.com/products/calculator/
【讨论】:
【参考方案4】:在 Dataproc 和 Dataflow 之间进行选择时需要考虑以下三个要点
配置 Dataproc - 手动配置集群 数据流 - 无服务器。自动配置集群
Hadoop 依赖项 如果处理对 Hadoop 生态系统中的工具有任何依赖关系,则应使用 Dataproc。
便携性 Dataflow/Beam 在处理逻辑和底层执行引擎之间提供了清晰的分离。这有助于跨支持 Beam 运行时的不同执行引擎的可移植性,即相同的管道代码可以在 Dataflow、Spark 或 Flink 上无缝运行。
这个来自谷歌网站的流程图解释了如何选择一个而不是另一个。
https://cloud.google.com/dataflow/images/flow-vs-proc-flowchart.svg
更多详情请查看以下链接https://cloud.google.com/dataproc/#fast--scalable-data-processing
【讨论】:
哪个更便宜?【参考方案5】:是的,Cloud Dataflow 和 Cloud Dataproc 都可以用于实现 ETL 数据仓库解决方案。
可以在 Google Cloud Platform Big Data Solutions Articles 中找到这些产品存在的原因的概述
快速总结:
Cloud Dataproc 为您提供 GCP 上的 Hadoop 集群以及对 Hadoop 生态系统工具(例如 Apache Pig、Hive 和 Spark)的访问;如果您已经熟悉 Hadoop 工具并有 Hadoop 工作,这将具有很强的吸引力 Cloud Dataflow 为您提供了一个在 GCP 上运行基于 Apache Beam 的作业的地方,并且您无需解决在集群上运行作业的常见方面(例如平衡工作,或扩展作业的工作人员数量) ; 默认情况下,这是自动为您管理的,并且适用于批处理和流式传输)——这在其他系统上可能非常耗时 Apache Beam 是一个重要的考虑因素; Beam 作业旨在跨“运行器”(包括 Cloud Dataflow)移植,使您能够专注于逻辑计算,而不是“运行器”的工作方式——相比之下,在创作 Spark 作业时,您的代码是绑定的向跑步者、Spark 以及跑步者的工作原理介绍 Cloud Dataflow 还提供基于“模板”创建作业的功能,这有助于简化参数值不同的常见任务【讨论】:
Apache Beam 现在支持 Python 3.5【参考方案6】:与 Dataproc 同时提供 Hadoop 和 Spark 的原因相同:有时一种编程模型最适合这项工作,有时另一种。同样,在某些情况下,最适合这项工作的是 Dataflow 提供的 Apache Beam 编程模型。
在许多情况下,一个重要的考虑因素是已经有针对特定框架编写的代码库,并且只想将其部署在 Google Cloud 上,因此即使 Beam 编程模型优于 Hadoop,拥有大量 Hadoop 代码的人可能暂时仍会选择 Dataproc,而不是在 Beam 上重写他们的代码以在 Dataflow 上运行。
Spark 和 Beam 编程模型之间的差异非常大,并且在很多用例中,每个模型都具有很大的优势。见https://cloud.google.com/dataflow/blog/dataflow-beam-and-spark-comparison。
【讨论】:
以上是关于Google Cloud Dataflow 和 Google Cloud Dataproc 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
我可以在 BigQuery 和 Google Cloud Dataflow 中使用相同的编程语言吗?
用于 NRT 数据应用的 Google Cloud DataFlow
在 google-cloud-dataflow 中使用文件模式匹配时如何获取文件名
TableRow.get上的Google Cloud Dataflow,BigQueryIO和NullPointerException