【Airflow】工作流自动化和调度系统

举报
野猪佩奇996 发表于 2022/03/26 23:19:09 2022/03/26
【摘要】 文章目录 一、Airflow的诞生二、基于CeleryExecutor方式的系统架构三、Airflow的组成成分四、安装五、基本命令Reference 一、Airflow的诞生 未使用ai...

一、Airflow的诞生

未使用airflow 使用airflow
需要自己添加调度代码、调试复杂、功能单一、缺乏整体调度能力 框架调度,简单易用,更稳定,功能全面,可以整体调度
缺乏图形化能力,给任务的新增、排查等操作带来很多困难。特别是当任务较多,结构复杂的时候 内置树状图和流程图,清晰明了的展现任务拓扑结构
需要自己添加任务实时监测代码 任务实时状态返回网页界面,方便管理和查看
任务的各种操作大多需要编码或命令行完成,不够高效 常见操作方式转化为图形化界面,高效清晰
需要手动分离调度和业务代码 调度和业务代码分离,减少耦合性,方便运维和迭代

2014年,Airbnb创造了一套工作流调度系统:Airflow。Airflow是灵活可扩展的工作流自动化和调度系统 。2019年成为Apache的顶级项目。它可以让程序员通过编程实现:编写、调度、监控工作流,主要针对有大量数据进行传递的场景,不适合解决流式任务(如spark streaming和Flink)。

  • 通过python代码,把任务组织成有向无环图DAG,
  • 通过【依赖关系】在一组服务器上调度任务。

Airflow有啥用:

  • 监控自动化工作的情况(通过web UI和各个worker上记录的执行历史)
  • 自动处理并传输数据
  • 为机器学习或推荐系统提供一个数据管道和使用框架

二、基于CeleryExecutor方式的系统架构

使用celery方式的系统架构图(官方推荐使用这种方式,同时支持mesos方式部署)。turing为外部系统,GDags服务帮助拼接成dag,可以忽略。

  • master节点webui管理dags、日志等信息。scheduler负责调度,只支持单节点,多节点启动scheduler可能会挂掉
  • worker负责执行具体dag中的task。这样不同的task可以在不同的环境中执行。

在这里插入图片描述

  • turing为外部系统
  • GDags服务帮助拼接成dag
  • master节点webui管理dags、日志等信息
  • scheduler负责调度,只支持单节点
  • worker负责执行具体dag中的task, worker支持多节点

三、Airflow的组成成分

  • Worker:用来处理和执行整个工作流的各个节点的工作任务的东西。
  • Scheduler:只有干活的worker是不够的,Airflow需要有一个大脑,去检查哪些任务执行了,哪些任务没有执行,以及应该在什么时间执行任务。
  • WebServer:Airflow是可以用视窗工具(UI)来完成工作流修改,参数修改这些任务的。这个视窗工具就是一个web页面(简单理解就是在浏览器里面打开的网页)。这个WebServer启动之后,我们就可以更方便的去修改和检测我们的工作流了。
    • 中止、恢复、触发任务。
    • 监控正在运行的任务,断点续跑任务。
    • 执行 ad-hoc 命令或 SQL 语句来查询任务的状态,日志等详细信息。
      配置连接,包括不限于数据库、ssh 的连接等。

四、安装

(1)安装包

yum install python-devel mysql-devel -y
yum install python-devel
yum install python3-devel
yum install mysql-devel
pip3 install mysqlclient
pip3 install apache-airflow
pip3 install apache-airflow[mysql]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

(2)修改配置文件

# 初始化原始库 执行完以下命令后会在当前家用户目录下生成airflow目录
airflow db init
# vim airflow.cfg
具体要修改的内容如下
[core]
executor=LocalExecutor
sql_alchemy_conn = mysql://user:password@IP:3306/airflow
[smtp]
smtp_host = mail.ndpmedia.com
smtp_starttls = True
smtp_ssl = False
smtp_user = user
smtp_password = pass
smtp_port = 25
smtp_timeout = 30
smtp_mail_from =与user相同
smtp_retry_limit = 5

[webserver]
security = Flask AppBuilder
secure_mode = True
rbac=True

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

(3)创建用户

airflow users create --username admin --firstname admin --lastname admin --role Admin --email  example@XX.com
airflow webserver 启动web服务
airflow scheduler  启动调度程序

  
 
  • 1
  • 2
  • 3

五、基本命令

$ airflow webserver -D		 守护进程运行webserver
$ airflow scheduler -D		 守护进程运行调度器
$ airflow worker -D		     守护进程运行调度器
$ airflow worker -c 1 -D 	 守护进程运行celery worker并指定任务并发数为1
$ airflow pause dag_id  	 暂停任务
$ airflow unpause dag_id 	 取消暂停,等同于在管理界面打开off按钮
$ airflow list_tasks dag_id  查看task列表
$ airflow clear dag_id       清空任务实例
$ airflow trigger_dag dag_id -r RUN_ID -e EXEC_DATE  运行整个dag文件
$ airflow run dag_id task_id execution_date       运行task

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Reference

[1] airflow官方文档:https://github.com/apache/airflow
[2] 大数据基础airflow:https://www.cnblogs.com/barneywill/p/10268501.html
[3] airflow安装:https://blog.csdn.net/u011192458/article/details/106321676
[4] https://blog.51cto.com/xiaoqiangjs/2462914

文章来源: andyguo.blog.csdn.net,作者:山顶夕景,版权归原作者所有,如需转载,请联系作者。

原文链接:andyguo.blog.csdn.net/article/details/123747167

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。