apache airflow 可以处理 TB 级数据(约 50 TB)的 ETL 过程吗?

问题描述 投票:0回答:1

我的数据库中有大约 50TB 的数据需要经过 ETL 过程。这些数据位于本地数据库系统中。为此,我计划使用 Apache Airflow 进行提取、转换和加载。

我面临着关于这种情况的问题,所以,我需要知道气流是否是一个好的选择,以及什么可能是对这个过程有帮助的其他附加功能?

apache airflow etl large-data elt
1个回答
0
投票

简短的回答是“这取决于”。

Airflow 严格作为 Orchestrator

Airflow 最广为人知的是其“协调器”功能。从这个意义上说,Airflow 用于定义任务的一些时间表以在第三方系统上执行工作。例如,Airflow 可以每天午夜触发 Spark 作业。也许这个 Spark 作业是在 Databricks 集群、不同的云 Spark 服务(例如 Amazon EMR / Google Dataproc)或本地 Spark 集群上执行的。

这样的解决方案允许您将大型 ETL 任务卸载到专门为此类工作构建的工具,并且可以从 Airflow 角度异步完成

在 Airflow 上执行工作

实际的 ETL 工作可以在 Airflow 工作线程上执行,有时这样做是完全合适的。是否适合在 Airflow Worker 上执行数据传输取决于几个因素,包括:

  1. 每天需要传输50TB吗?
  2. 50TB需要多快传输?
  3. Airflow 工作线程有多少可用磁盘空间或内存?

如果您只需要传输 50TB 的数据一次,然后不再需要,那么使用 Airflow 并没有真正的意义,除非您已经拥有能够执行此类传输的现有 Airflow 环境。

如果您需要定期执行此类传输,并且您有足够的计算资源可供 Airflow 在可接受的时间内传输数据,那么当然,您可以使用 Airflow。例如,如果您需要备份 50TB 的数据仓库表,也许您可以捕获记录数,并使用动态任务映射迭代表的块,将每个块以 parquet 格式写入云存储。

50TB 是一个很大的数字,但使用 Spark 等更优化的分布式计算系统来执行工作可能会更具成本效益和时间效率。

© www.soinside.com 2019 - 2024. All rights reserved.