前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >助力工业物联网,工业大数据之服务域:AirFlow的介绍【三十一】

助力工业物联网,工业大数据之服务域:AirFlow的介绍【三十一】

作者头像
Maynor
发布2023-08-15 15:24:53
3080
发布2023-08-15 15:24:53
举报
文章被收录于专栏:最新最全的大数据技术体系

02:任务流调度回顾

目标回顾任务流调度的需求及常用工具

路径

  • step1:需求
  • step2:常用工具

实施

需求

  • 相同的业务线,有不同的需求会有多个程序来实现,这多个程序共同完成的需求,组合在一起就是工作流或者叫做任务流
  • 基于工作流来实现任务流的自动化运行
image-20210117143520344
image-20210117143520344
  • 需求1:基于时间的任务运行
    • job1和job2是每天0点以后自动运行
  • 需求2:基于运行依赖关系的任务运行
    • job3必须等待job1运行成功才能运行
    • job5必须等待job3和job4都运行成功才能运行
  • 调度类型
    • 定时调度:基于某种时间的规律进行调度运行
      • 调度工作流
    • 依赖调度:基于某种依赖关系进行调度运行
      • 工作流中的程序的依赖关系

常用工具

Oozie:Cloudera公司研发,功能强大,依赖于MR实现分布式,集成Hue开发使用非常方便

传统开发:xml文件

代码语言:javascript
复制
<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压缩包

代码语言:javascript
复制
name='appname2'
type=command
dependencies=appname1
comman='sh xxxx.sh'

上传到web界面中

场景:Apache平台

AirFlow:Airbnb公司研发,自主分布式、Python语言开发和交互,应用场景更加丰富

开发Python文件

代码语言:javascript
复制
# step1:导包
# step2:函数调用

提交运行

场景:整个数据平台全部基于Python开发

DolphinScheduler:易观公司研发,国产开源产品,高可靠高扩展、简单易用

小结

  • 回顾任务流调度的需求及常用工具

03:AirFlow的介绍

  • 目标了解AirFlow的功能特点及应用场景
  • 路径
    • step1:背景
    • step2:设计
    • step3:功能
    • step4:特点
    • step5:应用
  • 实施
image-20211005105421215
image-20211005105421215
  • 起源
    • 2014年,Airbnb创造了一套工作流调度系统:Airflow,用来替他们完成业务中复杂的ETL处理。从清洗,到拼接,只用设置好一套Airflow的流程图。
    • 2016年开源到了Apache基金会。
    • 2019年成为了Apache基金会的顶级项目:http://airflow.apache.org/。
  • 设计:利用Python的可移植性和通用性,快速的构建的任务流调度平台
  • 功能:基于Python实现依赖调度、定时调度
  • 特点
    • 分布式任务调度:允许一个工作流的Task在多台worker上同时执行
    • DAG任务依赖:以有向无环图的方式构建任务依赖关系
    • Task原子性:工作流上每个task都是原子可重试的,一个工作流某个环节的task失败可自动或手动进行重试
    • 自主定制性:可以基于代码构造任何你需要调度的任务或者处理工具
      • 优点:灵活性好
      • 缺点:开发复杂
  • 应用
    • 基于Python开发背景下的系统建议使用
  • 小结
    • 了解AirFlow的功能特点及应用场景

04:AirFlow的部署启动

目标了解AirFlow的工具部署及管理

路径

  • step1:安装部署
  • step2:启动测试
  • step3:关闭

实施

安装部署

  • 自行安装:《参考附录一》
  • 放弃安装:请将虚拟机快照恢复到《AirFlow安装完成》

启动测试

删除记录:第二次启动再做

代码语言:javascript
复制
rm -f /root/airflow/airflow-*

启动Redis:消息队列:

  • nohub非挂起redis任务,/opt/redis-4.0.9/src/redis-server
  • 加载redis配置文件,/opt/redis-4.0.9/src/redis.conf
  • output.log为存储日志文件
  • 2>&1中2代表错误日志,重定向为正确日志记录再output.log中,否则错误日志会在linux命令行打印
  • &后台
代码语言:javascript
复制
nohup /opt/redis-4.0.9/src/redis-server /opt/redis-4.0.9/src/redis.conf > output.log 2>&1 &
ps -ef | grep redis
image-20211015102148871
image-20211015102148871

启动AirFlow

代码语言:javascript
复制
# 以后台进程方式,启动服务
airflow webserver -D
airflow scheduler -D
airflow celery flower -D
airflow celery worker -D
image-20211015102430125
image-20211015102430125
  • 测试网络端口
  • Airflow Web UI:node1:8085
    • 用户名密码:admin
    • Celery Web UI:node1:5555

小结

  • 了解AirFlow的工具部署及管理
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 02:任务流调度回顾
  • 03:AirFlow的介绍
  • 04:AirFlow的部署启动
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档