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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 2014年,Airbnb创造了一套工作流调度系统:Airflow。Airflow是灵活可扩展的工作流自动化和调度系统 。2019年成为Apache的顶级项目。它可以让程序员通过编程实现:编写、调度、监控工作流,主要针对有大量数据进行传递的场景,不适合解决流式任务(如spark streaming和Flink)。

一、Airflow的诞生

image.png

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可以在不同的环境中执行。

image.png

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]

(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

(3)创建用户

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

五、基本命令

$ 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
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
66 3
|
13天前
|
人工智能 自然语言处理 JavaScript
Agent-E:基于 AutoGen 代理框架构建的 AI 浏览器自动化系统
Agent-E 是一个基于 AutoGen 代理框架构建的智能自动化系统,专注于浏览器内的自动化操作。它能够执行多种复杂任务,如填写表单、搜索和排序电商产品、定位网页内容等,从而提高在线效率,减少重复劳动。本文将详细介绍 Agent-E 的功能、技术原理以及如何运行该系统。
58 5
Agent-E:基于 AutoGen 代理框架构建的 AI 浏览器自动化系统
|
6天前
|
人工智能 监控 数据挖掘
工作流管理趋势:智能化、自动化与无限可能
本文深入探讨了工作流管理的定义、重要性、挑战及优化方法,强调其在提升企业效率、优化资源配置、提高透明度和促进协作等方面的作用。文章还介绍了构建高效工作流管理系统的步骤,包括流程梳理、设定KPIs、选择合适工具等,并分享了成功案例和未来趋势。
|
24天前
|
运维 监控 安全
自动化运维的魔法:打造高效DevOps工作流
在软件交付的快车道上,DevOps如同赛车手,而自动化运维则是那辆高性能赛车。本文将揭示如何通过自动化工具和最佳实践,构建一个高效、可靠的DevOps工作流,确保软件交付过程既快速又安全。我们将一起探索从代码提交到部署的每个关键步骤,并展示如何通过实际案例简化这一旅程。
|
2月前
|
机器学习/深度学习 人工智能 机器人
智能废物管理系统:城市垃圾的自动化处理
【10月更文挑战第24天】智能废物管理系统利用物联网、大数据、人工智能和自动化机器人等技术,实现城市垃圾从分类、收集到处理的全过程自动化,提高处理效率,优化资源配置,提升居民参与度,降低运营成本,推动城市可持续发展。
|
1月前
|
运维 监控 网络协议
自动化运维的魔法——打造高效、可靠的系统
【10月更文挑战第32天】在数字化时代的浪潮下,运维不再是简单的硬件维护和故障排除。它已经演变成一场关乎效率、稳定性和创新的技术革命。自动化运维,作为这场革命的核心,正引领着企业走向更加智能和高效的未来。本文将带你探索自动化运维的世界,揭示其背后的原理和实践,让你领略到自动化带来的无限可能。
28 0
|
2月前
|
运维 监控 安全
构建高效运维体系:从监控到自动化的全面指南在当今数字化时代,运维作为保障系统稳定性和效率的重要环节,其重要性不言而喻。本文将深入探讨如何构建一个高效的运维体系,从监控系统的搭建到自动化运维的实施,旨在为读者提供一套完整的解决方案。
本文详细介绍了高效运维体系的构建过程,包括监控系统的选择与部署、日志分析的方法、性能优化的策略以及自动化运维工具的应用。通过对这些关键环节的深入剖析,帮助运维人员提升系统的可靠性和响应速度,降低人工干预成本,实现业务的快速发展和稳定运行。
|
2月前
|
运维 Prometheus 监控
运维中的自动化实践每月一次的系统维护曾经是许多企业的噩梦。不仅因为停机时间长,更因为手动操作容易出错。然而,随着自动化工具的引入,这一切正在悄然改变。本文将探讨自动化在IT运维中的重要性及其具体应用。
在当今信息技术飞速发展的时代,企业对系统的稳定性和效率要求越来越高。传统的手动运维方式已经无法满足现代企业的需求。自动化技术的引入不仅提高了运维效率,还显著降低了出错风险。本文通过几个实际案例,展示了自动化在IT运维中的具体应用,包括自动化部署、监控告警和故障排除等方面,旨在为读者提供一些实用的参考。
|
3月前
|
存储 弹性计算 运维
自动化监控和响应ECS系统事件
阿里云提供的ECS系统事件用于记录云资源信息,如实例启停、到期通知等。为实现自动化运维,如故障处理与动态调度,可使用云助手插件`ecs-tool-event`。该插件定时获取并转化ECS事件为日志存储,便于监控与响应,无需额外开发,适用于大规模集群管理。详情及示例可见链接文档。
|
4月前
|
运维 监控 应用服务中间件
自动化运维:打造高效、稳定的系统环境
【8月更文挑战第30天】本文将探讨如何通过自动化运维技术,提升系统的稳定性和效率。我们将从基础概念出发,逐步深入到实践应用,分享一些实用的工具和技术,以及如何将这些工具和技术融入到日常的运维工作中。无论你是运维新手,还是有一定经验的老手,都能在这篇文章中找到有价值的信息。让我们一起探索自动化运维的世界,提升我们的工作效率,让系统运行得更加平稳。