调度系统
文章平均质量分 54
dll007
这个作者很懒,什么都没留下…
展开
-
airflow源码精读 十二
airflow链接hive ,重点在于airflow的运行机器环境和hive的连通是没有问题的,这是实际开发中非常重要的点和前提。3.理解hive,整体的思路就是连接上hive,拼接hql,通过beeline在hive内运行sql 并返回运行结果,只是把在hive上执行的hql改成了airflow的python code。1.维护hive_conn连接信息,参考conn连接配置。2.理解hiveoperator。原创 2023-03-19 22:43:49 · 221 阅读 · 0 评论 -
airflow源码精读十一
首先做任务的依赖检查 _check_and_change_state_before_execution,任务出错,则调用handle_failure对错误进行处理——是否重试等操作.如果通过,则将任务的状态更新为running,执行任务。任务的实例的执行入口为run.原创 2023-03-19 22:40:43 · 506 阅读 · 0 评论 -
airflow源码精读 十
SchedulerJob 重载实现自己的 _execute 逻辑——初始化类 DagFileProcessorManager,传入参数——DAG 目录、DAG 目录中的文件列表、处理 DAG 的最大线程数、处理时间间隔和处理次数等,然后将 DagFileProcessorManager 实例作为参数传入方法 _execute_helper.刷新文件夹,找到新增和废弃的文件。对于新增的文件,放入DagFileProcessorProcess进行解析,对于丢弃文件,删除数据库中记录。原创 2023-03-11 13:43:03 · 332 阅读 · 0 评论 -
airflow源码精读 九
回填任务主要用于运行过去的任务,具体为创建多个dagrun,并创建多个taskinstance,然后将taskinstance发送到执行器,期间发送心跳,用于与外界交互,同时通过监控数据库的状态来监控整个任务的运行情况.在 _execute 方法中异步启动 task_runner,通过循环监控任务运行返回状态码和发送心跳信号。当要终止job时,可以修改数据库中任务实例的状态,也可以通修改LocalTaskJob的状态来实现。核心属性taskrunner,任务运行器在运行任务时,会打开一个新的进程。原创 2023-03-11 13:42:07 · 209 阅读 · 0 评论 -
airflow源码精读 八
基于一种生产消费者模型,在一台服务器内,基于LocalExecutor进程的锁安全,启动多线程,LocalExecutor接受taskinstance放入self.queue队列,多个localWoker去线程安全的消费队列中的元素。前端发送一个停止任务的信号,则可以后端直接修改数据库中任务的状态,当发生心跳回调时,查询数据库中任务的状态,然后停止任务。由于有的任务需要长期执行,因此需要将任务的状态写入数据库,以方便监控;1,任务运行期通过心跳机制,检测任务的存活以及对任务进行干预。原创 2023-03-11 13:41:26 · 227 阅读 · 0 评论 -
airflow源码精读 七
执行命令 airflow worker,所谓 Worker 其实是 Celery 的工作进程,一个 Worker 根据 concurrency 启动若干个守护进程,用于任务的并发执行。CeleryExecutor用于远程执行任务,多进程模式,可分布在不同服务器间,通过共同连通的队列(redis,mq消息队列),实现分布式的生产者消费者模式,CeleryExecutor接到任务提交到分布式celery任务队列中,celery的woker消费指定队列的任务,执行其命令。正在执行的任务(self.runing)原创 2023-03-11 13:40:44 · 198 阅读 · 0 评论 -
airflow源码精读 六
trigger_rule【all_success | all_failed | all_done | one_success】表示对于上游算子 的依赖;接受的cli命令通过在args根据给定命令匹配到指定的Arg(tuple数组),在以Arg名称去subparsers匹配到相应的执行函数func。wait_for_downstream表示当且上次的dagrun的下游算子完成之后,才能触发该次算子运行。算子本身可以是一个dag图,运行时会占用一定资源,以虚拟的。算子与算子之间,不能直接通信。原创 2023-03-11 13:39:37 · 266 阅读 · 0 评论 -
airflow源码精读 五
Scheduler 调度器调度器是整个airlfow的核心枢纽,负责发现用户定义的dag文件,并根据定时器将有向无环图转为若干个具体的dagrun,并监控任务状态。Dag 有向无环图Job有向无环图用于定义任务的任务依赖关系。任务的定义由算子operator进行,其中,BaseOperator是所有算子的父类。Dagrun 有向无环图的运行实例在调度器的作用下,每个有向无环图都会转成任务实例。不同的DagRun之间用 [dagid+ 执行时间execution date] 进行区分。原创 2023-03-11 13:38:51 · 238 阅读 · 0 评论 -
airflow源码精读 四
Airflow 是基于分布式任务队列 Celery 基础上的定时调度系统,它将不同的任务类型抽象成 Operator,并提供 API 编排各任务之间的依赖关系和配置属性,形成 DAG,从而简化任务提交和维护成本。同时 Airflow 还提供任务重跑、标记成功、查看日志等的可视化操作 UI 和更为灵活丰富的客户端命令行接口。原创 2023-03-11 13:39:59 · 237 阅读 · 0 评论 -
airflow源码精读 三
引导在k8s上部署airflow 参考官方文档。原创 2023-03-11 13:37:12 · 327 阅读 · 0 评论 -
airflow源码精读 二
airflow源码原创 2023-03-11 13:36:16 · 164 阅读 · 0 评论 -
Airlofw源码精读 一
airflow源码解读原创 2023-03-11 13:36:58 · 445 阅读 · 0 评论