Apache Airflow

WeBank/Schedulis

瘦欲@ 提交于 2020-08-09 15:55:25
简介 Schedulis 是一个基于 LinkedIn 的开源项目 Azkaban 开发的工作流任务调度系统。该调度系统具备高性能,高可用(去中心化多调度中心和多执行器)和多租户资源隔离等金融级特性;现已被集成到数据应用开发门户 DataSphere Studio 。 Schedulis 支持常规的 Command Shell 和 Linkis(HadoopMR、 Hive、Spark、Sqoop、 Python)大数据任务;同时还支持特色的数据检查和工作流之间的依赖任务;支持完善的告警和工作流执行策略;提供多种类型的参数设置,动态全局变量和简单易用的 UI。 与 DataSphere Studio 和 Linkis 的对接 DataSphere Studio 可以将编辑好的工作流一键发布到 Schedulis 进行调度,而 Schedulis 也实现了 Linkis 插件,用于向 Linkis 提交任务,这样使得 Schedulis 与 DataSphere Studio 和 Linkis 能够无缝衔接,从而实现数据应用开发全流程的连贯顺滑用户体验。 与业界现有调度系统的比较 下面将 Schedulis 和业界现有的调度系统做了个对比,包括:Azkaban, Dolphin, Airflow 和 Xxl-job 模块 描述 Schedulis Azkaban Dolphin

几种大数据ETL工作流调度系统的介绍和对比

这一生的挚爱 提交于 2020-03-14 12:13:43
几种大数据ETL工作流调度系统的介绍和对比 1. 什么是ETL工作流系统 做过ETL的同学都知道,我们在处理数据的时候往往都是分成好几个任务步骤来完成一个数据处理流程。多个任务单元之间往往有着强依赖关系,上游任务执行并成功,下游任务才可以执行。比如上游任务结束后拿到 A 结果,下游任务需结合 A 结果才能产出 B 结果,因此下游任务的开始一定是在上游任务成功运行拿到结果之后才可以开始。而为了保证数据处理结果的准确性,就必须要求这些任务按照上下游依赖关系有序、高效的执行。 ETL调度系统就是这样可以组织任务前后依赖关系,让任务有序执行的关键系统。 在开源的世界里,目前有这三种调度系统来供我们免费使用,它们是,Airflow,Azkaban,Dolphin scheduler。下面我分别来介绍一下这三个调度系统的架构和工作原理 2. AZKABAN Azkaban 是国外开源的一个工作流调度系统比较成熟。 先上一张架构图 : 主要有如下几种组件构成: Web Server : 主要包括工作流配置管理,用户认证,定时调度,触发任务执行功能 Executor:处理实际工作流和任务的执行 Database: 存储工作流和任务的元信息 具体执行流程: 【1】调度器触发或者人工触发,生成工作流实例信息出入数据库 【2】更具LB选择一个Executor来执行该工作流实例 【3

Django-设置预定作业?

梦想的初衷 提交于 2020-02-26 14:03:25
我一直在使用Django开发网络应用程序,并且很好奇是否有一种方法可以安排作业定期运行。 基本上,我只是想遍历数据库并定期自动进行一些计算/更新,但是我似乎找不到任何有关此操作的文档。 有人知道如何设置吗? 需要说明的是:我知道我可以设置 cron 作业来执行此操作,但是我很好奇Django中是否有某些功能可以提供此功能。 我希望人们能够自己部署此应用程序,而无需进行大量配置(最好为零)。 我已经考虑过通过简单地检查自从上次将请求发送到站点以来是否应该运行作业来“追溯地”触发这些操作,但是我希望有一些清洁的方法。 #1楼 Celery 是基于AMQP(RabbitMQ)构建的分布式任务队列。 它还以cron类的方式处理周期性任务(请参阅 周期性任务 )。 根据您的应用程序,可能值得一试。 用django( docs )设置Celery非常容易,并且在停机的情况下,定期任务实际上会跳过错过的任务。 如果任务失败,Celery还具有内置的重试机制。 #2楼 将以下内容放在cron.py文件的顶部: #!/usr/bin/python import os, sys sys.path.append('/path/to/') # the parent directory of the project sys.path.append('/path/to/project') # these

使用Airflow来调度Data Lake Analytics的任务

≡放荡痞女 提交于 2019-11-30 06:03:28
今天我们来介绍一下使用Airflow来调度 Data Lake Analytics (后面简称DLA)的任务执行。DLA作为一个数据湖的解决方案, 客户有每天周期性的调度一些任务从DLA查询数据回流到业务系统的需求。因为DLA兼容 MySQL的协议,因此所有支持MySQL的协议的调度框架都天然支持DLA,今天就来介绍一下使用业界著名的 Apache Airflow 来调度DLA的作业。 大致步骤如下: 购买一个ECS用来运行Airflow 安装Airflow 添加DLA的DB Connection 开发任务脚本 购买ECS并进行配置 购买ECS的详细流程这里就不一一罗列了,非常的简单,按照 官方的购买流程 可以分分钟完成,需要注意的几点这里说一下: 购买的ECS的Region要和你的数据所在Region(其实也就是你开通DLA的 Region 保持一致)。 购买的ECS需要开通外网访问权限,因为Airflow的一些网页控制台需要通过外网来访问。 ECS购买好之后记得在安全组里面放行入方向的80端口,因为下面要安装的Airflow有web页面,我们需要通过80端口进行访问,如下图: 同时记录下这个ECS的外网地址: 安装Airflow Airflow是一个Python写的软件,因此我们是通过Python的Package Manager:pip来安装的,因为我们要使用MySQL

Airflow在Kubernetes上的操作器

白昼怎懂夜的黑 提交于 2019-11-30 06:03:14
Airflow在Kubernetes (第一部分): 一种不同类型的Operator 作者 : Daniel Imberman (Bloomberg LP) 译者: openthings ,2019.02.26. 原文: https://kubernetes.io/blog/2018/06/28/airflow-on-kubernetes-part-1-a-different-kind-of-operator/ 介绍 作为Bloomberg’s 持续提交来开发Kubernetes ecosystem ,我们高兴地宣布 Kubernetes Airflow Operator的诞生。作为一种 Apache Airflow 运行机制,一个流行的工作流程整合框架,可以原生地使用Kubernetes API来任意调用Kubernetes Pods。 什么是Airflow? Apache Airflow 是 DevOps 的 “Configuration As Code.”方法论的实现之一。Airflow允许用户多个步骤的流水线,使用简单的Python object DAG (Directed Acyclic Graph)来实现。你可以定义dependencies,通过程序来构建复杂的workflows,然后监控调度执行的任务,具有易于查看的UI。 列表方式呈现的工作流程:

airflow使用mysql数据库,LocalExecutor并发调度

故事扮演 提交于 2019-11-30 06:03:02
mysql-airflow 在mysql上执行 create database airflow; —— 创建数据库 GRANT all privileges on airflow.* TO 'airflow'@'%' IDENTIFIED BY '123456'; —— 将数据库airflow的所有权限授权airflow用户,密码123456且该用户可在任何IP段登录操作 FLUSH PRIVILEGES; —— 刷新权限 set explicit_defaults_for_timestamp = 1; 修改airflow配置文件airflow.cfg sql_alchemy_conn = mysql://airflow:123456@mysqlIP/airflow 初始化数据库 airflow initdb 若之前使用sqllite初始化过可使用airflow resetdb airflow-LocalExecutor 修改执行器,使airflow并发调度任务 修改配置文件airflow.cfg executor = LocalExecutor 重启scheduler即可(默认并发调度16) 分布式问题 1.需要使用同步方式解决dags目录与worker的同步问题——待解决 2.需要解决scheduler的单点问题,可参考 apache-airflow 调度系统 https:/

airflow单机版搭建记录——不使用mysql,redis

ぃ、小莉子 提交于 2019-11-30 06:02:52
[toc] airflow单机版搭建记录 环境准备 Python(pip)——airflow由python编写 安装airflow pip install apache-airflow 环境变量配置 本人是在root用户下执行,可自行选择 export AIRFLOW_HOME=~/airflow 执行airflow命令 airflow 为了在AIRFLOW_HOME下生成配置文件airflow.cfg 修改配置文件 default_timezone = Asia/Shanghai load_examples = False base_url = http://etl1:9999 web_server_port = 9999 初始化数据库 airflow initdb 修改时区 https://blog.csdn.net/crazy__hope/article/details/83688986 启动 airflow webserver -p 9999 -D airflow scheduler -D 附加程序 第三方开发的简陋的dag模板配置程序 环境 需要额外安装python3 https://www.cnblogs.com/Hunry/p/9350607.html java环境 pyt 博客 Airflow 使用随笔(内含 TimeZone 和 Backfill 等的详解)

Airflow 在 python operator 下如何使用execution_date变量

谁说我不能喝 提交于 2019-11-29 20:44:44
Airflow 在 python operator 下如何使用execution_date变量呢?不复杂,但是要跳出宏变量的圈,不要老想着用下面这种宏实现就行了 thedate = '{{(execution_date - macros.timedelta(days=1)).strftime("%Y-%m-%d")}}' 在 python operator 下,用如下代码 def example(**context): execution_date = context['execution_date'] // 这里获取 execution_date 变量 thedate = execution_date - timedelta(days=1) # 获得前一天的时间 task_example = PythonOperator( task_id='clean_adv_user_hs_to_ch', provide_context=True, // 这里要设置为 True python_callable=example, dag=dag, ) 参考 https://airflow.readthedocs.io/en/stable/howto/operator/python.html https://stackoverflow.com/questions/50093718/airflow

Azkaban、Xxl-Job与Airflow对比分析

懵懂的女人 提交于 2019-11-29 19:49:47
概述 Xxl-Job 简述 XXL-JOB是一个国内轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。基于Java技术栈,调度中心与执行器通信基于作者另一个开源项目 xxl-rpc ,采用自建注册中心,整体架构简单明了,易于上手。 图片来源:http://www.xuxueli.com/xxl-job/#/?id=_533-架构图 项目地址 Github: xuxueli/xxl-job Azkaban 简述 Azkaban为LinkedIn开源的分布式工作流调度框架,项目起源于解决Hadoop Jop依赖管理问题,但实际已经是一个通用的工作流调度框架,适用于不同业务场景。 图片来源:https://github.com/azkaban/azkaban/blob/master/docs/figures/azkaban2overviewdesign.png 项目地址 Github: azkaban/azkaban Airflow 简述 Apache-Airflow 是Airbnb开源的一款数据流程工具,已经在Apache孵化成功,成为Apache的顶级项目。以非常灵活的方式来支持数据的ETL过程,同时还支持非常多的插件来完成诸如HDFS监控、邮件通知等功能。Airflow支持单机和分布式两种模式,支持Master-Slave模式,支持Mesos等资源调度

AirFlow/NiFi/MLFlow/KubeFlow进展

╄→гoц情女王★ 提交于 2019-11-29 04:51:10
大数据分析中,进行流程化的批处理是必不可少的。传统的大数据处理大部分是基于关系数据库系统,难以实现大规模扩展;主流的基于Hadoop/Spark体系总体性能较强,但使用复杂、扩展能力弱。大数据分析向Kubernnetes等容器集群发展是大势所趋,AirFlow、NiFi、MLFlow、KubeFlow就是可以用于这些方向的新兴开源软件平台,可以充分容器集群和DevOps、云计算的优势,而且将传统的大量数据处理和机器学习等先进算法能够实现有机的结合。 AirFlow数据流程化处理系统 AirFlow是可编程的DAG流程框架,主要通过Python执行。最新版本通过Executor机制支持Kubernetes集群作为执行环境,从而可以将大量数据处理的流程在容器云中进行迁移。 Airflow在Kubernetes上的操作器 AirFlow-Tutorial AirFlow-Install Notebook Workflows: The Easiest Way to Implement Apache Spark Pipelines NiFi可视化数据流处理系统 通过可视化的方法编辑流程,并在线运行,支持后台监控、任务调度、执行器扩展等能力。NiFi采用Java和HTML开发,通过Web浏览器访问图形交互界面,服务器端可以运行于容器中。 NiFi ( https://nifi.apache