Apache Airflow 是一个优秀的开源工作流编排工具,拥有活跃的社区支持。它提供了开箱即用的所有工作流调度所需的功能。此外,DAG 可以用 Python 轻松编程。基于配置的回填历史数据和重试失败作业有助于缓解任何上游问题,并更好地处理数据的延迟到达。
问题是什么?
主要挑战是缺乏标准化的 ETL 工作流编排工具。目前,内部构建的基于 PowerShell 和 Python 的 ETL 框架用于调度和运行分析工作负载。然而,没有 Web UI 可以通过它来监控这些工作流,并且维护此框架需要额外的努力。这些基于外部依赖项的计划作业不适合现代大数据平台及其复杂的工作流。虽然我们对某些工作流尝试了 Apache Oozie,但它没有正确处理失败的作业。对于数据延迟到达,这些工具不够灵活,无法强制重试失败的作业。
Apache Airflow 如何帮助解决这个问题?
Apache Airflow 帮助我们使用 Python 以编程方式控制工作流,通过在 Web UI 中设置任务依赖关系和监控每个 DAG 中的任务。Airflow 允许我们查看这些复杂工作流中每个任务的详细日志。它内置了 Hive、MySQL、Google Cloud API 和其他连接器。它还让我们能够灵活地使用 JDBCHook 和 JDBCOperator 创建我们自己的自定义连接器(例如,用于 Netezza 数据库),或扩展现有的操作符,例如 Hive Operator。对于复杂的工作流,我们可以通过仅在工作日运行某些任务来使用 Airflow 设计 ETL。Airflow 的一个强大功能是它对数据回填的支持:当我们在 DAG 中添加新任务时,我们可以仅为该任务进行回填。Airflow 还允许我们设置外部 DAG 依赖关系,以及在数据库表上使用 SQLSensor 等功能来运行特定任务。
结果是什么?
我们希望使用 Apache Airflow 并行运行 DAG 中的并发任务和并发 DAG,以期更快地运行整个 ETL 工作负载。Airflow 帮助我们的分析师和开发人员专注于分析,而不是费力构建用于调度和监控应用程序的 ETL 框架。Airflow 促进了无缝的 ETL 迁移到 Google Cloud Platform (GCP),因为 GCP 维护着 Cloud Composer,这是一种 Apache Airflow 托管服务。