Airflow从零到“神”教程- 01 Airflow简介

Airflow从零到“神”教程- 01 Airflow简介

经验文章nimo972025-02-09 12:31:4812A+A-

我如何使用 Apache Airflow 自动化 ETL 工作流:

Apache-Airflow是由 Airbnb 创建的开源软件,专为构建、监控和管理工作流而开发。Airflow是一个工作流管理平台。使用Python编写实现的任务管理、调度、监控工作流平台。Airflow的调度依赖于crontab命令,与crontab相比Airflow可以方便查看任务的执行状况(执行是否成功、执行时间、执行依赖等),可追踪任务历史执行情况,任务执行失败时可以收到邮件通知,查看错误日志。对于管理调度任务有很大的帮助。

在介绍Airflow这个调度工具前先介绍几个相关的基础概念

DAG:即有向无环图(Directed Acyclic Graph),DAG用于描述数据流的计算过程;

Operators:描述了DAG中一个具体task要执行的任务,如BashOperator为执行一条bash命令,EmailOperator用于发送邮件,HTTPOperator用于发送HTTP请求,PythonOperator用于调用任意的Python函数;

Task:是Operator的一个实例,也就是DAG中的一个节点;

Task Instance:记录task的一次运行。Task Instance有自己的状态,包括“running”、“success”、“failed”、“skipped”、“up for retry”等;

Triggher Rules:指task的触发条件;

开发的初期阶段,为了数据尽快上线迭代,对于标签的调度作业可通过shell脚本和crontab命令完成简单的ETL任务,但是crontab的不足很严重:

大家也需说很多商业软件可以满足ETL的调度,但是商业软件的不足也很明显:

我将描述我们在工作中遇到的一些场景,这些场景让我们重新思考我们的工作方法。

场景一要创建上游和下游作业,即在特定作业完成后触发作业,我们需要一个依赖插件。

场景二:某个工作X,每小时运行一次,计算一些参数并产生一些结果,或者收集一些数据;我们如何将这些参数或结果传递给下一个工作?

场景三:重新处理最近 Y 天的数据并并行处理 Z 个任务。

场景四由于网络连接问题,作业失败。每次出现故障时,我们如何在不手动运行的情况下重试作业?

场景五:从一个地方轻松访问所有与任务相关的日志。

对于我们想要的每一个附加功能,都需要一个额外的插件来使事情顺利进行——在某些时候,需要额外的脚本来使事情可行。添加越来越多的插件只会增加系统的复杂性,使得管理我们的工作流程变得相当困难。

在 POC 上工作时,我们发现 Apache Airflow 是解决这个问题的一个非常好的解决方案:

不只是做ETL:

大家好奇,我是谁,我为什么做这个教程:

全套教程的包含内容:

下期提要:

第二节:安装本地airflow

点击这里复制本文地址 以上内容由nimo97整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

尼墨宝库 © All Rights Reserved.  蜀ICP备2024111239号-7