架构帮助 - ETL 数据流和处理的替代方案
Posted
技术标签:
【中文标题】架构帮助 - ETL 数据流和处理的替代方案【英文标题】:Architecture help - alternative to ETL data flow & processing 【发布时间】:2018-08-03 19:06:39 【问题描述】:我正在寻找一些关于为简单的 ETL 作业构建架构的指导。我已经构建了一个解决方案,但我正在寻找改进或尝试替代架构的方法。
这是我的用例:
-
源数据以 csv 格式从移动设备上传到云存储
处理数据并将其转换为 json 格式
使用大数据存储解决方案进行分析
使用可视化解决方案显示数据
为此,我构建了一个解决方案,用户将 csv 格式的源数据上传到云存储。我使用 Cloud Functions 来监控我的 Cloud Storage 存储桶中的更改,并触发 Dataflow 管道对其进行批处理,并将数据(json 格式)存储在 bigquery 中以供分析。最后,我使用 Data Studio 将我的 bigquery 表中的信息可视化。
这是我的工作流程:
云存储 -> 云函数(触发器)-> 云数据流 -> 大查询 -> 数据工作室
我可以使用哪些其他替代架构来实现这一目标? Cloud Pub/Sub 是批处理的选项吗?使用 Apache Kafka 进行流水线处理怎么样?
【问题讨论】:
您的解决方案没有问题。它实际上非常好 - 可扩展、事件驱动、NoOps'y 等。你为什么要确切地要求替代架构? @MikhailBerlyant:有一些关于利益冲突的书面指南。我认为它们非常好 - 只要您声明您作为开发人员布道者或其他人的兴趣,您应该没问题。当然,答案可能比 cmets 给你更多的空间来做到这一点。 (我对您提供有关这些规则的反馈的建议是:保持冷静。无论您的核心案例多么合理,过多的愤怒都会鼓励您的对话者关闭。这是人类的条件,最好接受)。 我使用的架构符合要求,并且按预期工作。我一直在寻求改进,看看我是否错过了任何极端情况。同样对于这里的这种情况-我的要求之一是还要构建另一种替代架构。这就是为什么我在这里寻求一些指导 架构不错。我们使用完全相同的。多年来一直在生产中运行它。没问题。不要修复没有损坏的东西! 【参考方案1】:看起来还不错。我在 AWS 上构建了许多数据湖解决方案,其中架构或多或少相似。在创建 AMI Id
、Instance Types
等管道之前,我偶尔会使用 DynamoDB
来存储我稍后在 Lambda
函数(动态创建管道)中使用的信息。
您可以使用Cloud Datastore
代替DynamoDB
。
【讨论】:
所以我也提出了一个替代架构:云存储 -> App Engine(计划的 cron 作业)-> Cloud Dataproc (Apache Spark) -> Big Table -> Data Studio 只是一个替代方案。看起来 DataProc (Apache Spark) 也可以进行 ETL 转换和其他一些重型工作,如 ML。现在使用 DataProc(Apache Spark),您必须设置一个节点集群来处理您的转换(因此它的操作开销更大)。 BigTable 是 BigQuery 的一个不错的替代品。两者都可以处理大数据,但处理方式不同。 如果App Engine
的目的只是定期检查文件是否可以处理,您可能需要考虑Cloud Functions
,而不是使用App Engine
(计划的cron 作业)。 以上是关于架构帮助 - ETL 数据流和处理的替代方案的主要内容,如果未能解决你的问题,请参考以下文章
同步还是异步?ETL架构的选择,为何关系到数据处理速度和系统性能