瓜子云的任务调度系统

本文介绍了瓜子云如何将任务调度系统从Crontab升级到Airflow,再结合Kubernetes解决可扩展性和环境隔离问题。在面临Airflow的HA、配置更新、Web访问Worker和不同环境执行等挑战时,瓜子云通过ZooKeeper、Confd、自定义Med-SDK等实现了Airflow在Kubernetes上的高效运行。
摘要由CSDN通过智能技术生成


瓜子云的任务调度系统结合了Kubernetes的Job和Airflow。


Airflow是Airbnb出品的任务调度系统,支持DAG调度,这一点完美的弥补了Kubernetes Job的不足。借助Kubernetes的自动扩展,集群资源统一管理,Airflow将更具灵活性,更稳定。但是,把Airflow部署在Kubernetes上是一个很大的挑战。


接下来我讲详细介绍一下瓜子云的任务调度系统搭建所遇到的问题和解决方案。


需求


瓜子最早的时候,任务调度用的是Crontab,后来由于数据仓库的复杂调度需求,我们引入了Airflow。Airflow支持DAG依赖,失败重试,历史状态记录,log收集等多种非常使用的功能。


Airflow有很多问题:


  • Airflow的Worker需要手动搭建,可扩展性不好。

  • Job代码更新之后,需要手动部署到Worker上,非常繁琐。

  • Airflow Worker的环境太多,由各个团队自行维护,维护成本太高。

  • 瓜子云平台搭建之后,所有机器都会被回收,各业务线拥有的机器将会很少,Worker将会没有地方部署。


此外,我们还希望调度系统有如下的功能:


  • DAG之间的依赖


    因为数据仓库的ETL非常复杂,没有任何人能够完全掌控整个流程,我们需要把整个ETL切成很多小的DAG,这些DAG之间是有互相依赖的。


  • 自动扩容缩容


    瓜子这样的特点,晚上有大量批量任务需要跑,白天每个小时,每一分钟都会有增量任务需要跑。


  • 环境隔离


    瓜子的语言多种多样,每个团队都有很多不同的Job在不同的环境上跑着,管理很混乱,还有可能互相影响。


介于这样的问题,我们准备把调度系统部署到Kubernetes上,利用Kubernetes的环境隔离,自动扩容缩容的特性。


Airflow的原始架构

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值