用于近实时 ETL 架构的正确工具

Right tool for near-real-time ETL architecture

我们有一个系统,我们的主要数据存储(和 "Universal Source of Truth")是 Postgres,但我们实时和夜间聚合地复制该数据。我们目前复制到 Elasticsearch、Redis、Redshift(仅限夜间),并且也在添加 Neo4j。

我们的 ETL 管道已经足够广泛,我们开始研究像 Airflow and Luigi 这样的工具,但从我最初的研究中可以看出,这些工具几乎完全用于聚合批量加载.

是否有任何工具可以处理 ETL 过程,既可以处理大批量 ETL 过程,也可以处理即时、大容量、单个记录的复制? Airflow 或 Luigi 会处理这个而我只是错过了吗?

谢谢!

我不是不同 ETL 引擎的疯狂专家,但我已经用 Pentaho Kettle 做了很多工作,并且对它的性能非常满意。特别是如果您调整转换以利用并行处理。

我主要用它来处理集成(实时)和执行 ETL 以驱动我们的报告数据库的夜间作业,但我很确定您可以将它设置为执行许多实时任务。

我确实设置了网络服务,实时调用我们后端的各种东西,但它基本上没有任何负载,听起来你做的事情比我们更繁重是。然后它再次具有集群 ETL 服务器和扩展我从未真正玩过的东西的功能。

我觉得如果您花时间正确设置 kettle 就可以完成这些事情。总的来说,我喜欢这个工具。在 GUI TBH 中工作是一种乐趣。如果您不熟悉或怀疑从 GUI 执行 ETL 的能力,您应该检查一下。你可能会感到惊讶。

就 Luigi 而言,您最终可能会采用微批处理方法,运行 在短时间间隔内完成作业。例如,您可以每分钟触发一个 cron 作业来检查 Postgres 表中的新记录并处理该批次。您可以为每个项目创建一个任务,以便您的处理流程本身围绕单个项目。在大量情况下,比如每秒更新数百次,这是一个真正的挑战。

Apache Spark 具有可扩展的批处理模式和微批处理模式,以及一些可以适应 ETL 的基本流水线运算符。然而,解决方案在支持基础设施方面的复杂程度上升了很多。