CSDN话题挑战赛第2期
参赛话题:学习笔记
- 项目中解决的问题
使用airflow调度hive脚本跑批任务
- 视频教程上整理知识点
学习视频:https://www.bilibili.com/video/BV1V7411K7Gy?p=40&vd_source=b002288652bae647c598ddf77f79a7b8
- Airflow基本概念
Airflow是Airbnb内部发起的一个工作流管理平台。使用Python编写实现的任务管理,调度,监控工作流平台。Airflow的调度依赖于crontab命令,与crontab相比Airflow可以方便查看任务的执行状况(执行是否成功、执行时间、执行依赖等),可追踪任务历史执行情况,任务执行失效使可以收到邮件通知,查看错误日志。对管理调度任务有很大的帮助。
Airflow官网 - 涉及名称解释
(1)DAG:有向无环图(Directed Acyclic Graph),DAG用于描述数据流的计算过程。
(2)Operators:描述了DAG中一个具体task要执行的任务,如BashOperator为执行一条bash命令,EmailOperator用于发送邮件,HTTPOperator用于发送HTTP请求,PythonOperator用于调用任意的Python函数。
(3)Task:是Operator的一个实例,也就是DAG的一个节点。
(4)Task Instance:记录task的一次运行。Task Instance有自己的状态,包括“running”、“success”、“failed”、“skipped”、“up for retry”等。
(5)Triggher Rules:指task的触发条件。 - 主要功能模块
- 工作流调度之DAG脚本参数配置
(1)depends_on_past:是否依赖上游任务,即上一个调度任务执行失败时,该任务是否执行。可选项包括“True”和“False”,False表示当前执行脚本不依赖上游执行任务是否成功。
(2)start_date:表示首次任务的执行日期。
(3)email:设定当任务出现失败时,用于接受失败告警邮件的邮箱地址。
(4)email_on_failure:当任务执行失败时,是否发送邮件。可选项包括“True”和“False”,True表示失败时发送邮件。
(5)retries:表示执行失败时是否重新调起任务执行,1表示会重新调起1次。
(6)retry_delay:表示重新调起执行任务的时间间隔。
(7)priority_weight:权重,越大则代表在所有dag中执行的优先级越高。
(8)schedule_interval:调度时间间隔,下图’30 2,4,18 * * *'表示2点30分,4点30分和18点30分各调度1次。
- 生产中的注意点
- 需要单独跑某个任务时,可以选择该任务后点击Ignore All Deps,再选择Run,参考下图。
- DAG脚本中start_date与schedule_interval相互联系,如果改了schedule_interval,脚本会从start_date的日期开始执行,如果不需要从头跑,记得要一起改start_date。
- schedule_interval参数为crontab执行时间,一般有五个*,第一个*代表分钟,第二个*代表小时,*号之间以空格隔开。可以使用小工具转译 https://www.iamwawa.cn/crontab.html