任务流调度工具AirFlow
1. AirFlow介绍【了解】
- 功能、特点
- 架构角色、安装部署
2. **AirFlow使用【掌握】**
- 核心:调度脚本【Python | Shell】
- 定时调度:Linux Crontab表达式
- 邮件告警:配置
3. 回顾Spark核心概念
- 存储:安全性、高效性
- 计算:使用【API:类、方法】、原理【资源使用】
- 零碎:采集、调度、选举、可视化
- Spark概念
- 分布式资源:Master | ResourceManager、Worker | NodeManager
- 分布式程序:Driver 、Executor、Task
- 原理性概念:Job、DAG、Stage
任务流调度回顾
目标:回顾任务流调度的需求及常用工具
路径
- step1:需求
- step2:常用工具
实施
需求
- 相同的业务线,有不同的需求会有多个程序来实现,这多个程序共同完成的需求,组合在一起就是工作流或者叫做任务流
- 基于工作流来实现任务流的自动化运行
- 需求1:基于时间的任务运行
- job1和job2是每天0点以后自动运行
- 需求2:基于运行依赖关系的任务运行
- job3必须等待job1运行成功才能运行
- job5必须等待job3和job4都运行成功才能运行
- 调度类型
定时调度:基于某种时间的规律进行调度运行
- 调度工作流
依赖调度:基于某种依赖关系进行调度运行
- 工作流中的程序的依赖关系
常用工具
- Oozie:Cloudera公司研发,功能强大,依赖于MR实现分布式,集成Hue开发使用非常方便
- 传统开发:xml文件
```xml
<workflow>
<start to="action1">
</start>
<action name='action1'>
<shell>
</shell>
<ok to='action2'>
<kill to='killAction'>
</action>
<action name='action2'>
<shell>
</shell>
<ok to='action3'>
<kill to='killAction'>
</action>
……
</workflow>
```
- 现在开发:Hue通过图形化界面自主编辑DAG
- 场景:CDH大数据平台
- Azkaban:LinkedIn公司研发,界面友好、插件支持丰富、自主分布式,可以使用properties或者JSON开发
- 开发properties文件,压缩成zip压缩包
```properties
name='appname2'
type=command
dependencies=appname1
comman='sh xxxx.sh'
```
- 上传到web界面中
- 场景:Apache平台
- AirFlow:Airbnb公司研发,自主分布式、Python语言开发和交互,应用场景更加丰富
- 开发Python文件
```python
# step1:导包
# step2:函数调用
```
- 提交运行
- 场景:整个数据平台全部基于Python开发
- DolphinScheduler:易观公司研发,国产开源产品,高可靠高扩展、简单易用
AirFlow的介绍
目标:了解AirFlow的功能特点及应用场景
路径
- step1:背景
- step2:设计
- step3:功能
- step4:特点
- step5:应用
实施
起源
- 2014年,Airbnb创造了一套工作流调度系统:Airflow,用来替他们完成业务中复杂的ETL处理。从清洗,到拼接,只用设置好一套Airflow的流程图。
- 2016年开源到了Apache基金会。
- 2019年成为了Apache基金会的顶级项目:http://airflow.apache.org/。
- **设计**:利用Python的可移植性和通用性,快速的构建的任务流调度平台
- **功能**:基于Python实现依赖调度、定时调度
特点
- 分布式任务调度:允许一个工作流的Task在多台worker上同时执行
- DAG任务依赖:以有向无环图的方式构建任务依赖关系
- Task原子性:工作流上每个task都是原子可重试的,一个工作流某个环节的task失败可自动或手动进行重试
- 自主定制性:可以基于代码构造任何你需要调度的任务或者处理工具
- 优点:灵活性好
- 缺点:开发复杂
应用
- 基于Python开发背景下的系统建议使用
AirFlow的部署启动
目标:了解AirFlow的工具部署及管理
路径
- step1:安装部署
- step2:启动测试
- step3:关闭
实施
安装部署
- 自行安装:《参考附录一》
- 放弃安装:请将虚拟机快照恢复到《AirFlow安装完成》