Airflow web 页面介绍

趁我未失忆之前,记录过去曾经的自己


前言

这一篇只介绍Airflow web 页面介绍,想要了解架构或是安装或是workflow的编写,可以参考我发布的其他相关文章,首先我们进入 http://localhost:8080会进入 Airflow的管理页面!。


一、DAG

標題是 DAGs,這是 Directed Acyclic Graph (有向无环图)的簡稱,也是 Airflow 區分不同 Data Pipeline 的方式,這裡我們要先知道的是一個 DAG 是由多個 Task 組成,每個 Task 是分開執行的,而 Task 是 Airflow 執行基礎單位,後面我們會在更深入的探討 DAG & Task 的關係。

在这里插入图片描述

  • 最左邊有一排 On & Off 的開關,如果是 Off 的狀態代表 Scheduler 不會依照 Schedule 欄位的時間去排程,但我們一樣可以手動 trigger 一個 DAG 去執行。
  • DAG 欄位代表的是每一個 DAG 的名稱,DAG 的名稱同時也是 DAG 的 id,所以之後我們在實作自己的 DAG 時,不能與已經有的 DAG 名稱重複。
  • Owner 欄位則代表這個 DAG 是屬於誰的,實際開發中,可以把 Owner 欄位當成實作該 DAG 人員的名稱。
  • Runs 欄位則代表這個 DAG 整体状态是成功还是失败还是进行中。
    圈1 success:总共执行成功的dag数,执行次数
    圈2 runing:正在执行dag数
    圈3 faild:执行失败的dag数
  • Schedule 欄位代表什麼時間要執行 DAG,表示方式跟 Crontab 類似。
  • Last Run栏位表示dag最后执行的时间点
  • Recent Tasks 栏位这里包含9个圆圈,每个圆圈代表task的执行状态和次数。
    圈圈1 success:现实成功的task数,基本上就是该tag包含多少个task,这里基本上就显示几。
    圈圈2 running:正在运行的task数
    圈圈3 failed:失败的task数
    圈圈4 unstream_failed:上游的失败的task数
    圈圈5 skipped:跳过的task数
    圈圈6 up_for_retry:执行失败的task,重新执行的task数
    圈圈7 up_for_reschedule :执行重排程的数
    圈圈8 queued:队列,等待执行的task数
    圈圈9 none :
    圈圈10 scheduled:刚开始调度dag时,这一次执行总共调度了dag下面多少个task数,并且随着task的执行成功,数值逐渐减少。
    圈圈11 sensing:
  • Actions: 针对这DAG有Trigger,Refresh,Delete动作
  • Links :会触发这个DAG更多细节的相关操作页面,分别为Tree View,tree Graph View,Task Duration,Task Tries,Landing Times,Gantt,Details,Code这几个标签,以下针对这些标签的功能进行讲解。

1.Tree View

这里有将DAG做成树表示形式,每个跨时间的跨度。 如果管道延迟,您也可以从这个页面快速查看不同的步骤在哪里,并确定阻塞在哪一个步骤。
当dag执行的时候,可以点入,查看每个task的执行状态(基于树状视图),状态:queued,running,success,failed,up_for_retry,up_for_reschedule,upstream_failed,skipped,scheduled,no_status.在未來dag执行的时候,我們會很常進入 Tree View 查看每一次 DAG 的執行狀況。看看每个任务进行的状态如何。
在这里插入图片描述

2.Graph View

点进Graph View 後,Airflow 会用图形的方式呈现 Directed Acyclic Graph(有向无环图),这一页没有很明显看到每次执行的情况在這一頁雖然沒辦法很明顯看到每次執行的情況, 但對於理解每個 DAG 執行的流程很有幫助。
在这里插入图片描述

3.Tasks Duration

您在过去N次运行中的不同任务的持续时间。该视图使您可以找到异常值,并快速了解DAG在许多运行中所花费的时间。这个图片是截至于官网。
在这里插入图片描述

4.Task Tries

每个task的重试次数。
在这里插入图片描述

5.Gantt

这里的甘特图使您可以分析任务持续时间和重叠情况。您可以快速确定卡在那里以及特定DAG运行所花费的时间。这个图片是截至于官网。
在这里插入图片描述

6.Details

这个DAG详细讯息。
在这里插入图片描述

7.code

在这个Code 分页,可以看到实际的程序编码。这个DAG的怎么进行与那个任务有依赖关系然后任务失败成功做什么等等,都可以在这个code页面下定义。ˊ至于怎么写可以再我其他文章中查看。
在这里插入图片描述

二、執行 DAG

我们执行一个 DAG 这里用 example_branch_dop_operator_v3 做范例,先点击最左边的选项将 Off 变成 On,然后过一阵子,会发现 Scheduler 已经是 Schedule */1 * * * * 开始执行example_branch_dop_operator_v3 了。
在这里插入图片描述
点这个DAG ,进入Tree View页面,深绿是执行成功,浅绿是正在run等,相对应的颜色就如同右上角一般。把滑鼠移到每个图框上会出现黑色底白字框框,分别记录每个触发trigger 执行过程。
在这里插入图片描述
最后,随意点击一个有颜色的方形框框,右上角会有 View Log按钮,点进去会看到Task执行的Log,透过这个功能我们能查看每个Task执行记录。

在这里插入图片描述
在这里插入图片描述

三、Browse 浏览标签

1.SLA Misses

如果有一个或多个实例未成功,则会发送警报电子邮件,详细说明错过其SLA的任务列表。 该事件也记录在数据库中,并在Web UI中的Browse-> Missed SLA下可用,可以分析和记录事件。

2.DAG Runs

显示所有DAG状态
在这里插入图片描述

3.Jobs

查看dag的执行状态,开始时间和结束时间等指标
在这里插入图片描述

4.Audit logs

查看所有dag下面对应的task的日志,并且包含检索.
在这里插入图片描述

5.Task Instance

查看每个task实例执行情况
在这里插入图片描述

6.Task Reschedule

跟踪重新安排的任务实例,暂无图表。

四、Admin标签

在这里插入图片描述

  • Pools: 可以将DAG建立在同一个池中,统一管理分类,我们点进去default_pool就可以发现这池的任务清单。也可以建立不同的池。

在这里插入图片描述

  • Configuration:查看airflow的配置,即:./airflow_home/airflow.cfg

  • Connections:最后我们来看看Airflow 如何管理 Credential,进来后会发现已经有预设的 Connections。我们的Task需要通过Hook访问其他资源, Hook仅仅是一种访问方式, 就像是JDBC driver一样, 要连接DB, 我们还需要DB的IP/Port/User/Pwd等信息. 这些信息不太适合hard code在每个task中, 可以把它们定义成Connection, airflow将这些connection信息存放在后台的connection表中. 我们可以在WebUI的Admin->Connections管理这些连接.
    在这里插入图片描述

  • Variables:没有包含task_id/dag_id属性。用来定义一些系统级的常量或变量, 我们可以在WebUI或代码中新建/更新/删除Variable. 也可以在WebUI上维护变量.也可以上传

  • 在这里插入图片描述

  • XComs:和Variable类似, 用于Task之间共享一些信息. XCom 包含task_id/dag_id属性, 适合于Task之间传递数据, XCom使用方法比Variables复杂些. 比如有一个dag, 两个task组成(T1->T2), 可以在T1中使用xcom_push()来推送一个key value, 在T2中使用xcom_pull()来获取这个key value.

在这里插入图片描述

五、Docs标签与Security标签

就是提供一些官方文档与用户清单与用户权限管理等功能,这里我就不仔细介绍。

### Apache Airflow 入门与使用 #### 什么是 Apache Airflow? Apache Airflow 是一个用于编排和调度任务的开源平台,特别适合于创建、调度和监控复杂的数据工作流。通过定义有向无环图(DAGs),用户可以轻松管理依赖关系并自动执行任务。 #### 如何安装 Apache Airflow? 可以通过 Python 的包管理工具 `pip` 来安装 Apache Airflow。运行以下命令即可完成安装: ```bash pip install apache-airflow ``` 此过程会下载并安装最新版本的 Airflow 及其必要的依赖项[^2]。 #### 配置 Airflow 环境 为了使 Airflow 正常运行,需要设置一些环境变量来初始化数据库和其他配置文件。通常情况下,这一步涉及以下几个操作: 1. 初始化 Airflow 数据库。 2. 创建管理员账户以便访问 Web UI。 3. 启动 Scheduler 和 Web Server 进程以分别负责计划任务和提供图形化界面支持。 具体命令如下所示: ```bash airflow db init airflow users create --username admin --password admin --firstname Admin --lastname User --role Admin --email admin@example.com airflow webserver & airflow scheduler & ``` 这些脚本帮助开发者快速搭建起可用的服务框架[^4]。 #### 使用 DAG 文件编写工作流程 Airflow 中的核心概念之一就是 **Directed Acyclic Graph (DAG)** ,即有向无环图结构表示一系列相互关联的任务集合。每一个节点代表一项独立的工作单元或者称为 Operator;边则描述它们之间的先后顺序约束条件。 下面展示了一个简单的例子程序片段说明如何构建这样的逻辑链条: ```python from datetime import timedelta, datetime from airflow import DAG from airflow.operators.bash_operator import BashOperator default_args = { 'owner': 'airflow', 'depends_on_past': False, 'start_date': datetime(2023, 9, 1), 'retries': 1, } dag = DAG( dag_id='example_dag', default_args=default_args, schedule_interval=timedelta(days=1)) task_1 = BashOperator(task_id='print_date', bash_command='date', dag=dag) task_2 = BashOperator(task_id='sleep_task', bash_command='sleep 5', retries=3, dag=dag) task_1 >> task_2 ``` 上述代码段展示了两个基本的操作符连接起来形成一条线性的作业链路[^1]。 #### 查看任务状态及日志 除了 CLI 工具外,Airflow 还提供了功能丰富的 GUI 页面让用户能够直观地观察到当前正在运行中的各项指标表现情况以及历史记录详情等内容。借助这个特性,工程师们可以更加便捷高效地理解决策过程中遇到的各种问题[^3]。 #### 总结 综上所述,从基础架构部署到最后实际应用开发阶段,整个生命周期都可以依靠官方文档资源学习掌握更多高级特性和最佳实践方法论[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值