本文主要介绍如何使用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调度中心发布任务步骤相关推荐

  1. 联想基于Apache DolphinScheduler构建统一调度中心的应用实践

    导读 随着业务不断增长以及定时任务类型的多样化,联想内部需要一个统一的调度中心对任务生命周期进行管理.Apache DolphinScheduler 是一个分布式.易扩展的可视化 DAG 工作流任务调 ...

  2. 闲聊调度系统 Apache Airflow

    开始之前 Apache Airflow 是一个由开源社区维护的,专职于调度和监控工作流的 Apache 项目,于2014年10月由 Airbnb 开源,2019年1月从 Apache 基金会毕业,成为 ...

  3. 如何将 Apache Airflow 用于机器学习工作流

    Apache Airflow 是一个流行的平台,用于在 Python 中创建.调度和监控工作流. 它在 Github 上有超过 15,000 颗星,被 Twitter.Airbnb 和 Spotify ...

  4. 亚马逊aws 服务器删除_AWS推出Apache Airflow全托管工作流MWAA

    最近,AWS 推出了亚马逊Apache Airflow托管工作流(MWAA),这是一项全托管的服务,简化了在 AWS 上运行开源版 Apache Airflow 和构建工作流来执行 ETL 作业和数据 ...

  5. bitnami如何使用_使用Bitnami获取完全配置的Apache Airflow Docker开发堆栈

    bitnami如何使用 I've been using it for around 2 years now to build out custom workflow interfaces, like ...

  6. Apache Airflow系列文章

    Apache Airflow是优秀的 数据流水线耦合工具,在开源世界已经成为了事实上的 工作流调度标准,国外的云厂商都直接提供Airflow的云服务,其开源势头也特别的强劲,预计在 2020年年底推出 ...

  7. 系列学习分布式任务调度 XXL-JOB 之第 1 篇 —— XXL-JOB 介绍(调度中心、执行器)

    一般来说,我们在 SpringBoot 项目里,如果需要定时处理一件事,我们最常用的做法是:在启动类增加注解 @EnableScheduling 启用任务调度,然后在 task 任务类的某个方法上增加 ...

  8. Spring for Apache Hadoop 1.0发布

    SpringSource发布了Spring for Apache Hadoop 1.0. 开发者能够通过它编写基于Spring Framework的Hadoop应用,还能很容易地与Spring Bat ...

  9. 国家铁路调度中心在哪_博慈46寸液晶拼接屏打造上海铁路局南翔站指挥中心显示系统...

    博慈46寸液晶拼接屏打造上海铁路局南翔站指挥中心显示系统 日前,交通运输部.财政部.国家铁路局.中国民用航空局.国家邮政局.中国铁路总公司发布<关于鼓励支持运输企业创新发展的指导意见>.主 ...

  10. XXL-JOB研究二 调度中心

    一.启动流程 调度中心启动类是XxlJobScheduler,源码如下 public void init() throws Exception {// 初始化国际化文件initI18n();// 实时 ...

最新文章

  1. SpringBoot入门和配置
  2. Windows Phone开发(25):启动器与选择器之WebBrowserTask
  3. CTF -杂项密码学,常见密码介绍(一)
  4. 科技行业风投日趋谨慎:VR、机器学习和汽车值得关注
  5. 工作397-Wxml
  6. python字符串用法_笔记:python字符串的使用
  7. ionic 安卓apk签名_安卓 APP 三代加壳方案的研究报告
  8. Perl脚本 — 数字IC验证
  9. 手眼标定原理(眼在手上和眼在手外)
  10. gluster安装完全指南
  11. oa人员导入模板_九思OA办公系统平台:提高企业综合办公能力,助力企业高速成长...
  12. 防盗报警器c语言程序,基于AT89C2051设计的无线防盗报警器 附程序
  13. 无刷电机工作原理介绍
  14. 制作字幕(一般方法)
  15. 计算机专业mac好用吗,苹果笔记本电脑系统好用吗_苹果笔记本电脑系统好用不好用-win7之家...
  16. Centos7.5部署MySQL5.7基于GTID主从复制+并行复制+半同步复制+读写分离(ProxySQL) 环境- 运维笔记 (完整版)...
  17. STM32自学笔记-7-CAN总线通信
  18. Java毕业设计_基于javaweb的网上预约实验室管理系统的设计与实现
  19. Origin 不连续数据点做出连续曲线
  20. 2876: [Noi2012]骑行川藏

热门文章

  1. 《数字图像处理》-(3)-2频率域滤波
  2. RAMOS (内存操作系统)-无忧百科(不断完善中)
  3. 利用leafcutter做可变剪切(新手向)
  4. JAVA日本图片_java使用Thumbnailator操作图片
  5. 【技术贴】图文教程 最新QQ空间免费背景音乐添加方法||QQ空间免费添加背景音乐。...
  6. 解决fbreader从书架打开的是同一本书问题
  7. 网络安全之黑客入侵的步骤
  8. phpMyAdmin4.8.1漏洞复现及利用
  9. 完美发布带摘要的dedecms幻灯片代码
  10. 根据银行卡号获取对应的银行信息