Fernando Gandia - Airflow - PyData Mallorca 18-10-2016

  • Published on
    16-Mar-2018

  • View
    166

  • Download
    4

Embed Size (px)

Transcript

  • Fernando Gandia

  • Fernando Gandia

    Conceptos generales

    La plataforma Sus componentes principales Interfaces de comunicacin

    DAGs Como se especifican? Como se importan en la plataforma? Como se ejecutan y se prueban?

    Operadores Por defecto Propios

    Interfaz de usuario

    Ejemplos

  • Fernando Gandia

    Qu es Airflow?

    Seleccionar datos Predecir Decidir

    00:00 02:0022:00

    Predecir Decidir

    23:30 01:0022:00

    Seleccionar datos

    Predecir Decidir

    23:30 01:0022:00

    Seleccionar datos

    CRON

    Especifica el inicio de cada tarea

    Cada tarea se dispara al llegar un instante. No por dependencia con otra tarea

    Manejo de errores es complejo

    Describir

    Por qu surge Airflow?

    Plataforma que permite , Temporizar y Monitorizar flujos de trabajo.

  • Fernando Gandia

    La esencia de Airflow?

    DAG (Directed Acyclic Graphs):

    Coleccin de tareas, organizadas de tal manera, que queden reflejadas sus relaciones y dependencias.

    Grafo acclico dirigido:

    Las aristas tienen un sentido definido.

    No tiene ciclos.

    Se especifican en ficheros Python

  • Fernando Gandia

    Conceptos generales

    La plataforma Sus componentes principales Interfaces de comunicacin

    DAGs Como se especifican? Como se importan en la plataforma? Como se ejecutan y se prueban?

    Operadores Por defecto Propios

    Interfaz de usuario

    Ejemplos

  • Fernando Gandia

    Comandoairflow initdb

    Comandoairflow scheduler

    Comandoairflow webserver p

    Web Server Scheduler DataBase

  • Fernando Gandia

    Command Line Interface Web User Interface

  • Fernando Gandia

    Conceptos generales

    La plataforma Sus componentes principales Interfaces de comunicacin

    DAGs Como se especifican? Como se importan en la plataforma? Como se ejecutan y se prueban?

    Operadores Por defecto Propios

    Interfaz de usuario

    Ejemplos

  • Fernando Gandia

    Importar mdulos.

    Diccionario de argumentos

    Instanciar el DAG

    Crear cada tarea, asignndole un tipo de operador y sus correspondientes parmetros.

    Especificar relaciones y dependencias.

    1

    2

    3

    4

    5

  • Fernando Gandia

    Copiar fichero .py en la carpeta dags

    Dag Folder

    Comando airflow list_dags

    Si el Scheduler est en marcha el Dag se compila y se importa automticamente en la UI

    Scheduler

    1

    2

    3

  • Fernando Gandia

    Por defecto, al importar un DAG, inicialmente la temporizacin del mismo est encendida.

    A menos que, en las opciones de configuracin hayamos desactivado dicha caracterstica.

  • Fernando Gandia

    Si hemos especificado una fecha de inicio, se llevan a cabo ejecuciones de relleno hasta la fecha actual

  • Fernando Gandia

    python dag_file.pyCompilar

    airflow test dag_id task_id execution_dateEjecutar una tarea especfica

    airflow backfill dag_id s start_date e end_dateEjecutar DAG

  • Fernando Gandia

    Conceptos generales

    La plataforma Sus componentes principales Interfaces de comunicacin

    DAGs Como se especifican? Como se importan en la plataforma? Como se ejecutan y se prueban?

    Operadores Por defecto Propios

    Interfaz de usuario

    Ejemplos

  • Fernando Gandia

    Llevan a cabo una

    accin o le indican a otro sistema que la

    realice.

    3 tipos de operadores

    Transfierendatos de un

    sistema a otro

    Sensores que se mantienen en

    ejecucin hasta que se lleva a cabo

    cierta condicin

    Tipo 1 Tipo 2 Tipo 3

  • Fernando Gandia

    BashOperator

    DummyOperator

    BranchPythonOperator

    HttpSensor

    SimpleHttpOperator

    PythonOperator

    ShortCircuitOperator

    DummySkipOperator

    SubDagOperator

    SubDagOperator

    TriggerDagRunOperator

    BaseOperator

  • Fernando Gandia

    Qu necesidad deba cubrir?

    Trata con datos de Hive o Impala a travs de scripts de Python / PySpark desde un entorno de Airflow remoto.

    SSHExecuteOperatorOpcin

    1

    Entorno Airflow

    Dag

    Infraestructura de datos y procesamiento distribuido

    Puerto 22

    Python / PySpark

    Hive

    Bash

    Impala

    Libreras , Scripts

    HDFS

    Ssh

    Si se interrumpe la tarea se mantiene la ejecucin en la insfraestructura

    Qu opciones me aportaba Airflow?

  • Fernando Gandia

    Qu necesidad deba cubrir?

    Trata con datos de Hive o Impala a travs de scripts de Python / PySpark desde un entorno de Airflow remoto.

    Qu opciones me aportaba Airflow?

    SSHExecuteOperator

    BashOperator

    PythonLibreras , Scripts

    Impyla

    Opcin 2

    Opcin 1

    Entorno Airflow

    Dag

    Infraestructura de datos y procesamiento distribuido

    Puerto 22

    Python / PySpark

    Hive

    Bash

    Impala

    Libreras , Scripts

    HDFS

    Ssh

    HiveServerPuerto 1000

    Los datos se tratan en el entorno Airflow y su mbito est dentro del script Python.

    No hay procesamiento distribuido.ODBC

  • Fernando Gandia

    Qu necesidad deba cubrir?

    Trata con datos de Hive o Impala a travs de scripts de Python / PySpark desde un entorno de Airflow remoto.

    Qu opciones me aportaba Airflow?

    ODBC

    SSHExecuteOperator

    BashOperator

    PythonLibreras , Scripts

    Impyla

    Opcin 2

    Opcin 3

    HiveOperator

    Hive - Beeline

    Hadoop

    ODBC

    Opcin 1

    Entorno Airflow

    Dag

    Infraestructura de datos y procesamiento distribuido

    Puerto 22

    Python / PySpark

    Hive

    Bash

    Impala

    Libreras , Scripts

    HDFS

    Ssh

    HiveServerPuerto 1000

    Se necesita tener Hadoop y Hiveinstalados en mismo entorno Airflow

  • Fernando Gandia

    No instalar nada mas en el entorno Airflow Los datos y los scripts deban mantenerse en la infraestructura Sesin SSH interactiva

    Requisitos para mi operador?

    Cmo encripto los datos de conexin SSH?

    Airflow proporciona mdulos de conexin llamados Hooks

    1 Crear una conexin SSH con nuestro usuario propio en la interfaz de Airflow

    mi_conexion

    2 Utilizar estos datos de conexin desde el cdigo

    from airflow.contrib.hook import SSHHook

    mi_hook = SSHHook ( mi_conexion )

    mi_hook.hostmi_hook.loginmi_hook.password

    Librera pxssh

  • Fernando Gandia

    Cmo hago de mi solucin un operador de Airflow?

    Creo un fichero .py

    PluginsFolder

    from airflow.plugins_manager import AirflowPlugin

    class myOperador (BaseOperator)

    def __init__ (argumentos_del_operador)

    def execute

    def on_kill

    class myPlugin(AirflowPlugin)

    name = myPluginoperators = [myOperador]flask_blueprint = []hook = []executors = []

    super (myOperador, self).__init__(*args,**kwargs)

    Copiar fichero .py en la carpeta plugins

    1

    2

  • Fernando Gandia

    Conceptos generales

    La plataforma Sus componentes principales Interfaces de comunicacin

    DAGs Como se especifican? Como se importan en la plataforma? Como se ejecutan y se prueban?

    Operadores Por defecto Propios

    Interfaz de usuario

    Ejemplos

  • Fernando Gandia

    DAGS Resumen del estado de todos los DAGS.

  • Fernando Gandia

    Data Profiling Querys sobre los orgenes de datos definidos.

  • Fernando Gandia

    Browse Comprobar el estado de ejecucin de un elemento en particular

  • Fernando Gandia

    Admin Administracin de la plataforma, orgenes de datos y variables

  • Fernando Gandia

    Conceptos generales

    La plataforma Sus componentes principales Interfaces de comunicacin

    DAGs Como se especifican? Como se importan en la plataforma? Como se ejecutan y se prueban?

    Operadores Por defecto Propios

    Interfaz de usuario

    Ejemplos

Recommended

View more >