Airflow【部署 01】调度和监控工作流工具Airflow官网Quick Start实操(一篇学会部署Airflow)(1)

学习路线:

这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
在这里插入图片描述

需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

pip install “apache-airflow== A I R F L O W _ V E R S I O N " − − c o n s t r a i n t " {AIRFLOW\_VERSION}" --constraint " AIRFLOW_VERSION"constraint"{CONSTRAINT_URL}”


本次使用虚拟环境进行安装:



创建并切换到airflow虚拟环境

conda create -n airflow python=3.8
conda activate airflow


创建约束文件`airflowInstall.sh`添加官网给出的内容:



AIRFLOW_VERSION=2.7.2
PYTHON_VERSION=“ ( p y t h o n − − v e r s i o n ∣ c u t − d " " − f 2 ∣ c u t − d " . " − f 1 − 2 ) " C O N S T R A I N T _ U R L = " h t t p s : / / r a w . g i t h u b u s e r c o n t e n t . c o m / a p a c h e / a i r f l o w / c o n s t r a i n t s − (python --version | cut -d " " -f 2 | cut -d "." -f 1-2)" CONSTRAINT\_URL="https://raw.githubusercontent.com/apache/airflow/constraints- (pythonversioncutd""f2∣cutd"."f12)"CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints{AIRFLOW_VERSION}/constraints- P Y T H O N _ V E R S I O N . t x t " p i p i n s t a l l " a p a c h e − a i r f l o w = = {PYTHON\_VERSION}.txt" pip install "apache-airflow== PYTHON_VERSION.txt"pipinstall"apacheairflow=={AIRFLOW_VERSION}” --constraint “${CONSTRAINT_URL}”


执行文件即可。也可以使用`pip`进行安装:



pip install “apache-airflow==2.7.2”


查询版本:



airflow version


## 3.启动单机版


### 3.1 快速启动


该命令初始化数据库、创建用户并启动所有组件。



airflow standalone

启动成功标志

standalone | Airflow is ready
standalone | Login with username: admin password: ZUUNtd9ppZZTQuqy
standalone | Airflow Standalone is for development purposes only. Do not use this in production!


### 3.2 分步骤启动


如果您想手动运行Airflow的各个部分,而不是使用一体化的独立命令,您可以运行:


1. 该命令用于执行数据库迁移。在使用 Airflow 之前,你需要初始化数据库结构。db migrate 命令会根据你的配置文件创建数据库表格,以便存储任务调度、任务实例、DAG(Directed Acyclic Graph,有向无环图)等信息。运行后的信息:



airflow db migrate


初始化数据库后的输出信息:



DB: sqlite:root/airflow/airflow.db
Performing upgrade to the metadata database sqlite:root/airflow/airflow.db
[2023-10-19T14:21:37.687+0800] {migration.py:213} INFO - Context impl SQLiteImpl.
[2023-10-19T14:21:37.688+0800] {migration.py:216} INFO - Will assume non-transactional DDL.
[2023-10-19T14:21:37.690+0800] {db.py:1620} INFO - Creating tables
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
WARNI [unusual_prefix_911b7e3bced5159145cb88698226ecde6e08c7be_example_kubernetes_executor] The example_kubernetes_executor example DAG requires the kubernetes provider. Please install it with: pip install apache-airflow[cncf.kubernetes]
WARNI [unusual_prefix_008dd7238a3787d68b758fe337b9f566c5014ba3_tutorial_taskflow_api_virtualenv] The tutorial_taskflow_api_virtualenv example DAG requires virtualenv, please install it.
WARNI [unusual_prefix_db2b4614a7fb1ba43706f0a1f2be91e808476bfa_example_python_operator] The virtalenv_python example task requires virtualenv, please install it.
WARNI [unusual_prefix_5624127e5a8d9c88ab5a41d62ecf92869309dd74_example_local_kubernetes_executor] Could not import DAGs in example_local_kubernetes_executor.py
Traceback (most recent call last):
File “/root/anaconda3/envs/airflow/lib/python3.8/site-packages/airflow/example_dags/example_local_kubernetes_executor.py”, line 37, in
from kubernetes.client import models as k8s
ModuleNotFoundError: No module named ‘kubernetes’
WARNI [unusual_prefix_5624127e5a8d9c88ab5a41d62ecf92869309dd74_example_local_kubernetes_executor] Install Kubernetes dependencies with: pip install apache-airflow[cncf.kubernetes]
WARNI [unusual_prefix_f16a910b73b9eed67cbb95faa136bc7fd6c14eb6_workday] Could not import pandas. Holidays will not be considered.
Database migrating done!


2. 该命令用于创建 Airflow 的用户。在这个例子中,它创建了一个名为 “admin” 的用户,具有管理员角色(Admin),并提供了一些用户信息,如名字、姓氏、电子邮件等。



airflow users create
–username admin
–firstname Peter
–lastname Parker
–role Admin
–email spiderman@superhero.org

测试

airflow users create
–username test
–firstname te
–lastname st
–role Admin
–email testman@superhero.org

输入密码并确认后即可创建新用户

Password:
Repeat for confirmation:
[2023-10-19T15:08:26.070+0800] {manager.py:211} INFO - Added user %s
User “test” created with role “Admin”


3. 该命令启动 Airflow 的 Web 服务器。Web 服务器提供了一个用户界面,你可以通过浏览器访问。–port 8080 选项指定了 Web 服务器监听的端口号,这里是 8080。你可以通过访问 http://localhost:8080 来打开 Airflow Web UI。



用于启动

airflow webserver --port 8080 -D


4. 该命令启动 Airflow 的调度器。调度器负责按照你的 DAG(工作流)定义定期运行任务。它会检查定义的任务调度时间,然后触发相应的任务实例。调度器是 Airflow 中关键的组件之一,确保任务按照计划执行。



airflow scheduler -D


-D: 表示以守护进程(daemon)模式运行。以守护进程模式运行意味着该进程将在后台持续运行,而不占用当前终端。


### 3.3 启动后


在运行这些命令后,Airflow将创建`$AIRFLOW_HOME`文件夹,并创建默认值为`Airflow .cfg`的文件,这将使您快速运行。您可以使用环境变量覆盖默认值,请参见配置参考:<https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html>。您可以在`$AIRFLOW_HOME/airflow.cfg`中检查该文件,或者通过`Admin->Configuration`菜单中的UI检查该文件。如果由systemd启动webserver的PID将存储在`$AIRFLOW_HOME/airflow-webserver.pid`或`/run/airflow/webserver.pid`文件中。


![files-0.jpg](https://img-blog.csdnimg.cn/img_convert/112cf43ed846209ed9439236025529f6.jpeg)


### 3.4 服务启动停止脚本


感谢 <https://blog.csdn.net/weixin_45417821/article/details/128729413> 的分享,脚本`airflow-service.sh`内容:



#!/bin/bashstart
case $1 in
“start”){
echo " --------start airflow-------"
conda activate airflow;airflow webserver -p 8080 -D;airflow scheduler -D;conda deactivate
};;
“stop”){
echo " --------stop airflow-------"
ps -ef | egrep ‘scheduler|airflow-webserver’ | grep -v grep | awk ‘{print $2}’ | xargs kill -15
};;
esa


脚本使用:



启动

./airflow-service.sh start

停止

./airflow-service.sh stop


## 4.访问


### 4.1 登录


在浏览器中访问localhost:8080,并使用终端显示的管理员帐户详细信息登录。


![login-0.jpg](https://img-blog.csdnimg.cn/img_convert/868d6df636f000696173faa9adc0b153.jpeg)


### 4.2 测试


在主页中启用`example_bash_operator`DAG。


![example-0.jpg](https://img-blog.csdnimg.cn/img_convert/5e99467196b994a602e866fa484d3f55.jpeg)  
 页面的两条信息说明:


**在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。**


需要完整版PDF学习资源

**需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)**

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618540462)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 28
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值