近实时ETL架构的正确工具选择

3
我们有一个系统,其中我们的主要数据存储(也是“真相的普遍来源”)是Postgres,但我们实时复制该数据以及每晚的聚合数据。我们目前复制到Elasticsearch、Redis、Redshift(仅限每晚)和即将添加的Neo4j。

我们的ETL管道已经扩展到足够大的程度,开始考虑像AirflowLuigi这样的工具,但从我最初的研究中可以看出,这些工具几乎完全用于批量加载聚合数据。

是否有任何工具可以处理既能处理大批量ETL过程又能进行实时高容量个别记录复制的ETL过程?Airflow或Luigi是否处理此类操作而我只是错过了它们?

谢谢!

2个回答

1

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

我主要将其用于处理集成(实时)和每晚执行ETL以驱动我们的报告DB,但我几乎可以肯定,您可以设置它来执行许多实时任务。

我确实设置了Web服务,一次实时调用我们后端的各种东西,但它完全没有任何负载,并且听起来您正在做比我们更重的事情。然而,它具有集群ETL服务器和扩展我从未真正玩过的功能。

如果您花时间正确地设置它,就会感觉像水壶可以做到这些事情。总体而言,我喜欢这个工具。在GUI中工作是一种享受。如果您不熟悉或怀疑从GUI进行ETL的强大功能,请查看它。您可能会感到惊讶。


1
就路易吉而言,您可能会采用微批处理方法,在短时间间隔内运行任务。例如,您可以每分钟触发一个cron作业以检查Postgres表中的新记录并处理该批次。您可以为每个项目创建一个任务,使得处理流程本身围绕单个项目展开。在高负载情况下,比如每秒更新超过几百条记录,这是一个真正的挑战。
Apache Spark具有可扩展的批处理模式和微批处理模式,以及一些基本的管道操作符,可以适应ETL。然而,解决方案在支持基础设施方面的复杂度水平相当高。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接