众所周知,大数据领域内有数不清的组件。大数据领域中的组件甚至多到有人做了个小游戏,提问某串英文单词是宝可梦还是大数据领域里的组件。
但组件多没关系,其实更重要的是看这个组件所扮演了什么角色。例如 IDEA 和 eclipse 都是 Java 的 IDE,掌握其一即可对 IDE 有一定了解了。
从上图我们能看到 Oozie 是作业流调度的系统,但是本文要讲述的 Airflow 是比 Oozie 社区更火的调度系统。
本系列文章总共有三篇,此为第一篇,目前规划如下:
-
入门到入土 一:初识任务调度与 Airflow
- 什么是 Airflow?
- Airflow 能干什么?
-
入门到入土 二:概念、组件与使用
- Airflow 有哪些概念?
- Airflow 有哪些组件?
- 如何在 docker 中部署 airflow?
-
入门到入土 三:升级、插件与监控
- 关于版本:Airflow v1.x vs v2.x
- 更丰富和功能:Airflow 插件,如何开发插件?
- 监控:如何使用 statsD 监控 Airflow 的运行状况?
Airflow 是大数据领域中一款用 Python 开发的任务调度工具,用于 data pipeline 的调度和监控。
划重点:
- AIrflow 是用 Python 开发的,这意味着 Airflow 的运行效率可能不会很高,但代码更易懂且开发速度快。
- AIrflow 是一个任务调度工具,用于对 data pipline 进行调度和监控,这意味这不是一个用来存储或者计算的大数据组件。
作为一个任务调度工具,Airflow 当然是用来做任务调度的。
那什么是任务调度呢?
我们以洗衣服为例,简单科普下任务调度的概念。
洗衣服有什么流程?
- 拿衣服
- 洗衣服
- 晾衣服
其实这三个流程就是数据仓库里常见的ETL,也即 Extract(数据抽取,就是线上数据库抽取到数据仓库中), Transform(数据转换,即将数据通过一定的流程处理一遍) 和 Load(数据加载,也就是将清洗后的数据再次加载到数据库中)
我们将洗衣服这个流程抽象下,可以画出一个这样的图:
洗衣服的流程是相对固定的,而且每天要洗,我开始想着如何偷懒。
于是,作为懒狗,我决定每天厚着脸皮让室友A下楼顺便帮我拿我的脏衣服丢进洗衣机,又下血本,用五毛钱的辣条收买了室友B,让他帮我晾衣服。
于是这个流程变成了:
经过这样一番绝妙的布局,洗衣服这件事情对我来就非常轻松了。
我所需要做的,只有三件事情:
- 选择合适的时机求室友A去拿衣服
- 开动洗衣机(根据衣服脏的程度,设置合理的清洗时间)
- 选择合适的时机求室友B去晾衣服(衣服洗完了才能让室友B去拿)
这个阶段可以看做是为 E 和 L 过程编写了脚本,定时执行数据提取和数据载入的 *** 作。
这个时候的我,只需要在合适的时机调度室友 A和室友 B,并简单 *** 作下洗衣机,就能完成洗衣服的流程。
但是,这个流程,也可能会有一些情况需要处理。
例如当室友A在王者上分的时候,得等他打完了再喊他。(合理计划任务的执行时间)
例如洗衣机洗到一半停电了,那么就算时间到了也不需要叫室友B帮我晾衣服了。
(监控任务的执行转态,并根据任务的执行循序去执行,前面的任务完成了再去做后面的任务)
而 Airflow 就相当于这个阶段的我。
官方文档中是这样介绍的:Airflow 是一个以编程方式编写、计划和监视工作流的平台。
就像这个时候的我,想办法如何指示室友拿衣服晾衣服,计划室友什么时候有空,指使他们去哪拿什么衣服,以及看室友是不是好好在执行这个任务。
Airflow 则会定时启动 Extract 脚本,将线上数据库中的数据搬到数据库中,定时启动 Spark 程序进行数据处理和数据建模,然后在将得到的数据导入到某个数据库中。
如有帮助,欢迎点赞/转载~
(听说给文章点赞的人代码bug特别少)
联系邮箱:mrjingcheng@foxmail.com
个人公众号:禅与电脑维修艺术
欢迎关注公众号,也欢迎通过邮箱交流。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)