Apache Airflow调度中心发布任务步骤
本文主要介绍如何使用airflow发布和调度任务。
Airflow是一个以编程方式创作,安排和监控工作流程的平台。对比crontab来看,它是一个可以定时调度任务的系统,只不过,airflow的调度更容易管理。
- airflow支持任务依赖pipeline, 这是crontab以及quartz所不支持的。
- airflow调度系统和业务系统解耦。业务单独编写流程,支持任务热加载。
- airflow支持crontab定时格式
- airflow通过Python来定义task,可以实现复杂的逻辑,支持分支条件等
- airflow有一套完整的UI和管理系统
- airflow有强大的插件扩展方式,各种插件很丰富,很容易二次开发,添加新功能
- airflow是分布式设计,支持水平扩容
- airflow支持task实例,并支持数据业务日期bizdate, 也叫 execution_date.
- airflow支持任务补录backfill
- airflow支持任务之间数据传递(这个任务依赖于上个任务的变量)
- airflow支持序列执行(这个周期的任务依赖于上一个周期的执行结果是否成功)
- Airflow支持MQ完成scheduler到worker的消息传递,底层由celery+Rabbitmq实现。scheduler将需要运行的任务发送到MQ中,发送到MQ中包含任务对应的队列信息。worker从MQ获取消息时,仅获取相应队列任务,拉取到对应worker上执行。
airflow可以调度远程(SSH)机器上的bash脚本或发送http请求远程机器提供的任务接口,不仅如此airflow还有可视化的任务调度平台,可以方便直观的查看任务执行情况,并可以随意支配任务执行频次,指定任务间依赖关系等。下面就来具体介绍一下如何使用airflow来发布一个任务
1.首先需要创建airflow平台并创建用户
平台访问地址:http://airflow服务IP:airflow端口/admin/
平台搭建方法在另一篇文章中有详细描述:Apache Airflow搭建及使用指南
2.写调度脚本
调度脚本必须使用python语言来写。这里有两个例子:blogHttpDag(执行http接口形式的任务)和blogSshDag(执行bash脚本),可以参考。
还可以参考airflow的使用及注意事项中关于脚本的编写
具体步骤:(1)点击“DAGs”进入dag列表中,如下图
(2)点击其中一个例子的名称进入该dag详情页,点击红框的“Code”就展示了这个dag的脚本,根据这个脚本可以仿写你自己的调用脚本。
3.上传调度脚本
写好的python脚本需要上传到服务器的$AIRFLOW_HOME/dags/下,然后刷新DAGs页面,就能看到刚才上传的调用脚本出现在了列表中。
4.新建connection信息
脚本中涉及到的远程连接方式及权限需要告知管理员,由他增加到连接管理中,这里要注意conn id由任务创建者自定义,但需保证conn id在connections中的唯一性。
下图是连接列表,这里可以管理airflow与各机器的通信信息,用于远程调用。
下图是某一个连接信息的编辑页面,可以看到,这是一个ssh连接,远程机器IP、登录用户、密码、端口号都需要填写。这里密码虽然设置过但不会显示
5.触发任务调度
这时就可以根据需要,如果想要任务立刻进入调度队列,被调度器调度,那么就开启该dag左边的on按钮,如果想要立刻执行而不是等到设置的间隔时间来触发,可以点击该dag右侧的触发按钮。
on按钮和触发按钮分别是下面截图中的绿色和蓝色框所示。
DAGs页面不会自动刷新,因此需要手动刷新来查看任务执行情况,点击Links里的刷新按钮。
6.查看执行情况
如果出现红色的圈,代表任务或dag有错误,可以点击红圈查看错误详情。
Recent Tasks
这里包含9个圆圈,每个圆圈代表task的执行状态和次数
圈1 success:现实成功的task数,基本上就是该tag包含多少个task,这里基本上就显示几。
圈2 running:正在运行的task数
圈3 failed:失败的task数
圈4 unstream_failed:
圈5 skipped:跳过的task数
圈6 up_for_retry:执行失败的task,重新执行的task数
圈7 queued:队列,等待执行的task数
圈8 :
圈9 scheduled:刚开始调度dag时,这一次执行总共调度了dag下面多少个task数,并且随着task的执行成功,数值逐渐减少。
Last Run
dag最后执行的时间点
DAG Runs
这里显示dag的执行信息,包括3个圆圈,每个圆圈代表dag的执行状态和次数
圈1 success:总共执行成功的dag数,执行次数
圈2 runing:正在执行dag数
圈3 faild:执行失败的dag数
Code View
查看任务执行代码
Logs
查看执行日志,比如失败原因
Refresh
刷新dag任务
Delete Dag
删除该dag任务,删除的是这个dag实例以及它的日志,之后再刷新页面该dag又会出现在list中。
若想真正删除该dag,需要将其从服务器上的dags路径下手动删除。
注意事项:
如果是远程脚本调用方式,需要提前做以下几件准备工作:
(1)如果是堡垒机,并且要使用ssh远程脚本调用方式,则需要堡垒机上的该台服务器开通非22端口用于监听airflow的ssh连接。
具体开通端口方法,可参考文章:https://blog.csdn.net/lihuifen2011/article/details/105064617
(2)执行任务的服务器需要确保有专门的linux用户可以执行任务,特别是堡垒机服务器,必须将任务涉及的脚本及资源文件的属主改成非堡垒机用户,且该用户要有相应的任务执行权限等。
(3)需要开通网络访问权限。airflow到该台服务器的ssh端口需要开通权限,防火墙需要放开airflow机器的ssh访问。
如果是http远程调用方式,需要注意开通对应的端口的网络访问权限,防火墙需要放开airflow机器的http访问。
Apache Airflow调度中心发布任务步骤相关推荐
- 联想基于Apache DolphinScheduler构建统一调度中心的应用实践
导读 随着业务不断增长以及定时任务类型的多样化,联想内部需要一个统一的调度中心对任务生命周期进行管理.Apache DolphinScheduler 是一个分布式.易扩展的可视化 DAG 工作流任务调 ...
- 闲聊调度系统 Apache Airflow
开始之前 Apache Airflow 是一个由开源社区维护的,专职于调度和监控工作流的 Apache 项目,于2014年10月由 Airbnb 开源,2019年1月从 Apache 基金会毕业,成为 ...
- 如何将 Apache Airflow 用于机器学习工作流
Apache Airflow 是一个流行的平台,用于在 Python 中创建.调度和监控工作流. 它在 Github 上有超过 15,000 颗星,被 Twitter.Airbnb 和 Spotify ...
- 亚马逊aws 服务器删除_AWS推出Apache Airflow全托管工作流MWAA
最近,AWS 推出了亚马逊Apache Airflow托管工作流(MWAA),这是一项全托管的服务,简化了在 AWS 上运行开源版 Apache Airflow 和构建工作流来执行 ETL 作业和数据 ...
- bitnami如何使用_使用Bitnami获取完全配置的Apache Airflow Docker开发堆栈
bitnami如何使用 I've been using it for around 2 years now to build out custom workflow interfaces, like ...
- Apache Airflow系列文章
Apache Airflow是优秀的 数据流水线耦合工具,在开源世界已经成为了事实上的 工作流调度标准,国外的云厂商都直接提供Airflow的云服务,其开源势头也特别的强劲,预计在 2020年年底推出 ...
- 系列学习分布式任务调度 XXL-JOB 之第 1 篇 —— XXL-JOB 介绍(调度中心、执行器)
一般来说,我们在 SpringBoot 项目里,如果需要定时处理一件事,我们最常用的做法是:在启动类增加注解 @EnableScheduling 启用任务调度,然后在 task 任务类的某个方法上增加 ...
- Spring for Apache Hadoop 1.0发布
SpringSource发布了Spring for Apache Hadoop 1.0. 开发者能够通过它编写基于Spring Framework的Hadoop应用,还能很容易地与Spring Bat ...
- 国家铁路调度中心在哪_博慈46寸液晶拼接屏打造上海铁路局南翔站指挥中心显示系统...
博慈46寸液晶拼接屏打造上海铁路局南翔站指挥中心显示系统 日前,交通运输部.财政部.国家铁路局.中国民用航空局.国家邮政局.中国铁路总公司发布<关于鼓励支持运输企业创新发展的指导意见>.主 ...
- XXL-JOB研究二 调度中心
一.启动流程 调度中心启动类是XxlJobScheduler,源码如下 public void init() throws Exception {// 初始化国际化文件initI18n();// 实时 ...
最新文章
- SpringBoot入门和配置
- Windows Phone开发(25):启动器与选择器之WebBrowserTask
- CTF -杂项密码学,常见密码介绍(一)
- 科技行业风投日趋谨慎:VR、机器学习和汽车值得关注
- 工作397-Wxml
- python字符串用法_笔记:python字符串的使用
- ionic 安卓apk签名_安卓 APP 三代加壳方案的研究报告
- Perl脚本 — 数字IC验证
- 手眼标定原理(眼在手上和眼在手外)
- gluster安装完全指南
- oa人员导入模板_九思OA办公系统平台:提高企业综合办公能力,助力企业高速成长...
- 防盗报警器c语言程序,基于AT89C2051设计的无线防盗报警器 附程序
- 无刷电机工作原理介绍
- 制作字幕(一般方法)
- 计算机专业mac好用吗,苹果笔记本电脑系统好用吗_苹果笔记本电脑系统好用不好用-win7之家...
- Centos7.5部署MySQL5.7基于GTID主从复制+并行复制+半同步复制+读写分离(ProxySQL) 环境- 运维笔记 (完整版)...
- STM32自学笔记-7-CAN总线通信
- Java毕业设计_基于javaweb的网上预约实验室管理系统的设计与实现
- Origin 不连续数据点做出连续曲线
- 2876: [Noi2012]骑行川藏