airflow学习【1】

本文围绕Airflow展开,介绍了其安装过程中遇到的报错及解决方法,如安装前添加特定命令、开放Centos7防火墙8080端口等。阐述了Airflow的概念,包括Operators、Tasks等。还说明了使用步骤,以及配置支持mysql数据库和rabbitmq的方法,最后提及安装python3和pip3的参考链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装和理解等问题:
今天又再次体会到什么都木有官方文档管用

安装airflow时报错:

Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-XaFsmu/apache-airflow/

原因详见:

https://airflow.apache.org/installation.html

所以安装前加一行:

export SLUGIFY_USES_TEXT_UNIDECODE=yes

然后再安装:

pip install apache-airflow

# install from pypi using pip
pip install apache-airflow

# initialize the database
airflow initdb

# start the web server, default port is 8080
airflow webserver -p 8080

# start the scheduler
airflow scheduler

Centos7防火墙开放8080端口:

firewall-cmd –zone=public –add-port=8080/tcp –permanent

命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效

安装过程中报错:

error: command 'gcc' failed with exit status 1

解决方法:

yum install python-devel

Airflow的概念:

Operators:Airflow定义的一系列算子/操作符,更直接的理解就是python class。不同的Operator类实现了具体的功能,比如:

  • BashOperator: 可以执行用户指定的一个Bash命令
  • t1 = BashOperator(
    task_id=’print_date’,
    bash_command=’date’,
    dag=dag)
  • PythonOperator:可以执行用户指定的一个python函数
  • EmailOperator:可以进行邮件发送
  • Sensor:感知器/触发器,可以定义触发条件和动作,在条件满足时执行某个动作。Airflow提供了更具体的Sensor,比如FileSensor,DatabaseSensor等
  • Tasks:Operators的具体实例,在某个Operator的基础上指定了具体的参数或内容。其实就是OO概念中的对象(Operator是类)。
  • Task Instances:一个Task的一次运行会产生一个实例
  • DAGS:有向无环图,包括一系列的tasks和tasks之间的链接关系

使用Airflow的步骤就是定义以上概念的过程:;

  1. 根据实际需要,使用不同的Operator
  2. 传入具体的参数,定义一系列的Tasks
  3. 定义Tasks间的关系,形成一个DAG
  4. 调度DAG运行,每个Task会形成一个Instance
  5. 使用命令行或者Web UI进行查看和管理

    pip install apache-airflow[celery]

安装成功之后,执行下面三步,就可以使用了。默认是使用的SequentialExecutor, 只能顺次执行任务。

  • 初始化数据库 airflow initdb [必须的步骤]
  • 启动web服务器 airflow webserver -p 8080 [方便可视化管理dag]
  • 启动任务 airflow scheduler [scheduler启动后,DAG目录下的dags就会根据设定的时间定时启动]
  • 此外我们还可以直接测试单个DAG,如测试文章末尾的DAG airflow test ct1 print_date 2016-05-14

配置airflow支持mysql数据库

1.启动mariadb:

systemctl start mariadb

2.创建数据库

CREATE DATABASE airflow;

GRANT all privileges on airflow.* TO ‘username’@’localhost’ IDENTIFIED BY ‘password’;

FLUSH PRIVILEGES;

3.修改airflow配置文件支持mysql

sql_alchemy_conn = mysql://username:password@localhost/airflow

4.初始化数据库

airflow initdb

pip install airflow[rabbitmq]

配置rabbitmq

vim删除操作:

,删除所有内容:先用G 转到文件尾,然后使用下面命令:

 **:1, .d**

sql语句中的like操作符:

SELECT * FROM Persons
WHERE City LIKE 'N%'

我们希望从上面的 “Persons” 表中选取居住在以 “N” 开始的城市里的人.

IN 操作符允许我们在 WHERE 子句中规定多个值。

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)

like 使用%代表任何字符
like 使用?代表单个字符
matches使用*代表任何字符
matches使用_代表单个字符

第二次启动airflow时遇到一个问题:

Error: 'airflow.www.gunicorn_config' doesn't exist

一直没有解决

在这里理一下安装python3和pip3的方法:

http://www.cnblogs.com/wenchengxiaopenyou/p/5709218.html

网上有建议这样子解决,但是我没有成功:

执行命令

sudo pip3 install 'gunicorn==19.3.0'
03-25
### 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]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值