airflow零基础入门

Airflow 入门

简介

Airflow是什么

Airflow是airbnb开发的一个任务调度平台,目前已经加入apache基金会

Airflow有什么用

Airflow是一个可编程,调度和监控的工作流平台。基于有向无环图(DAG),airflow可以定义一组有依赖的任务,按照依赖依次执行。 airflow不仅提供了丰富的命令行工具用于系统管控,还提供了一套web管理界面用于方便地管控调度任务,并且对任务运行状态进行实时监控,方便了系统的运维和管理。

因此,如果有一系列的任务需要调度,同时,各任务之间还有着依赖关系,那么可以考虑使用airflow。

与Airflow同类型的产品

有兴趣的同学可以阅读以下链接

Workflow Processing Engine Overview 2018 英文版

2018工作流引擎比较 中文版

Airflow official Tutorial

official tutorial

"""
Code that goes along with the Airflow tutorial located at:
https://github.com/apache/airflow/blob/master/airflow/example_dags/tutorial.py
"""
from airflow import DAG
# 需要使用DAG实例化一个DAG的对象,因此,DAG是必须的
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta

"""
default_args是一个词典,之后会将此词典传入DAG的构造函数中.
DAG中的task在构造时将会这些值来初始化。
这种设计是将一些公共的配置提出来,
尤其是一些实例化task必备的参数,例如'owner'等。
更多可用的参数请参考 https://airflow.apache.org/code.html#airflow.models.BaseOperator
""""
default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': datetime(2015, 6, 1),
    'email': ['[email protected]'],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
    # 'queue': 'bash_queue',
    # 'pool': 'backfill',
    # 'priority_weight': 10,
    # 'end_date': datetime(2016, 1, 1),
}

"""
实例化一个DAG对象,实例化DAG时必须传入一个独一无二的tag_id,然后将之前定义好的默认参数传入,同时,也传入了schedule_interval
"""
dag = DAG('tutorial', default_args=default_args, schedule_interval=timedelta(days=1))


# t1, t2 and t3 are examples of tasks created by instantiating operators
"""
task 是BashOperator的实例
task_id同来标致task
bash_command 是执行的命令
dag为之前实例化的DAG对象
"""
t1 = BashOperator(
    task_id='print_date',
    bash_command='date',
    dag=dag)

t2 = BashOperator(
    task_id='sleep',
    bash_command='sleep 5',
    retries=3, # 可以重写默认的参数
    dag=dag)

# Jinja模板
templated_command = """
    {% for i in range(5) %}
        echo "{
     { ds }}" # 变量
        echo "{
     { macros.ds_add(ds, 7)}}" #函数
        echo "{
     { params.my_param }}" # 词典
    {% endfor %}
"""

t3 = BashOperator(
    task_id='templated',
    bash_command=templated_command, 
    params={'my_param': 'Parameter I passed in'},
    dag=dag)

t2.set_upstream(t1)
t3.set_upstream(t1)
# 等价于 t1 >> [t2, t3]
复制代码

Airflow 实践

Airflow安装

install

pip install apache-airflow

如果出现安装失败或者初始化db失败,可以看下是否是因为某个包安装失败或者版本不匹配,然后针对性地安装相关包即可

转载于:https://juejin.im/post/5c9618b8f265da60f16323b4

你可能感兴趣的:(python)