Apache Airflow 是一个出色的开源工作流编排工具,由活跃的社区提供支持。它开箱即用地提供了调度工作流所需的所有功能。此外,DAG 可以轻松地用 Python 编程。基于配置回填历史数据和重试失败的作业有助于缓解任何上游问题,并更好地处理数据的延迟到达。

Suganya Varadarajan

遇到的问题是什么?

主要的挑战是缺乏标准化的 ETL 工作流编排工具。目前使用内部构建的基于 PowerShell 和 Python 的 ETL 框架来调度和运行分析工作负载。然而,没有可通过 Web UI 监控这些工作流的途径,并且维护这个框架需要额外的精力。这些基于外部依赖的调度作业不太适合现代大数据平台及其复杂的工作流。虽然我们为某些工作流尝试过 Apache Oozie,但它无法妥善处理失败的作业。对于延迟到达的数据,这些工具的灵活性不足以强制对作业失败进行重试。

Apache Airflow 如何帮助解决这个问题?

Apache Airflow 使我们能够通过在 Web UI 中设置任务依赖关系和监控每个 DAG 中的任务来以编程方式用 Python 控制我们的工作流。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 的托管服务。