SlideShare una empresa de Scribd logo
1 de 27
Fernando Gandia
Fernando Gandia
 Conceptos generales
 La plataforma
 Sus componentes principales
 Interfaces de comunicación
 DAG’s
 ¿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):
Colección de tareas, organizadas de tal manera, que queden
reflejadas sus relaciones y dependencias.
Grafo acíclico 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 comunicación
 DAG’s
 ¿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
Comando
airflow initdb
Comando
airflow scheduler
Comando
airflow webserver –p <puerto>
Web Server Scheduler DataBase
Fernando Gandia
Command Line Interface Web User Interface
Fernando Gandia
 Conceptos generales
 La plataforma
 Sus componentes principales
 Interfaces de comunicación
 DAG’s
 ¿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 módulos.
Diccionario de argumentos
Instanciar el DAG
Crear cada tarea, asignándole un tipo de operador y sus
correspondientes parámetros.
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 automáticamente en la UI
Scheduler
1
2
3
Fernando Gandia
Por defecto, al
importar un DAG,
inicialmente la
temporización del
mismo está
encendida.
A menos que, en
las opciones de
configuración
hayamos
desactivado dicha
característica.
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_date
Ejecutar una
tarea específica
airflow backfill dag_id –s start_date –e end_dateEjecutar DAG
Fernando Gandia
 Conceptos generales
 La plataforma
 Sus componentes principales
 Interfaces de comunicación
 DAG’s
 ¿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
acción o le
indican a otro
sistema que la
realice.
3 tipos de operadores
Transfieren
datos de un
sistema a otro
Sensores que se
mantienen en
ejecución hasta que
se lleva a cabo
cierta condición
Tipo 1 Tipo 2 Tipo 3
Fernando Gandia
BashOperator
DummyOperator
BranchPythonOperator
HttpSensor
SimpleHttpOperator
PythonOperator
ShortCircuitOperator
DummySkipOperator
SubDagOperator
SubDagOperator
TriggerDagRunOperator
…
BaseOperator
Fernando Gandia
 ¿Qué necesidad debía cubrir?
Trata con datos de Hive o Impala a través de scripts de Python / PySpark desde un entorno de Airflow remoto.
SSHExecuteOperator
Opción
1
Entorno Airflow
Dag
Infraestructura de datos y
procesamiento distribuido
Puerto 22
Python / PySpark
Hive
Bash
Impala
Librerías , Scripts
HDFS
Ssh
Si se interrumpe la tarea se
mantiene la ejecución en la
insfraestructura
 ¿Qué opciones me aportaba Airflow?
Fernando Gandia
 ¿Qué necesidad debía cubrir?
Trata con datos de Hive o Impala a través de scripts de Python / PySpark desde un entorno de Airflow remoto.
 ¿Qué opciones me aportaba Airflow?
SSHExecuteOperator
BashOperator
Python
Librerías , Scripts
Impyla
Opción
2
Opción
1
Entorno Airflow
Dag
Infraestructura de datos y
procesamiento distribuido
Puerto 22
Python / PySpark
Hive
Bash
Impala
Librerías , 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 debía cubrir?
Trata con datos de Hive o Impala a través de scripts de Python / PySpark desde un entorno de Airflow remoto.
 ¿Qué opciones me aportaba Airflow?
ODBC
SSHExecuteOperator
BashOperator
Python
Librerías , Scripts
Impyla
Opción
2
Opción
3
HiveOperator
Hive - Beeline
Hadoop
ODBC
Opción
1
Entorno Airflow
Dag
Infraestructura de datos y
procesamiento distribuido
Puerto 22
Python / PySpark
Hive
Bash
Impala
Librerías , Scripts
HDFS
Ssh
HiveServerPuerto 1000
Se necesita tener Hadoop y Hive
instalados en mismo entorno
Airflow
Fernando Gandia
• No instalar nada mas en el entorno Airflow
• Los datos y los scripts debían mantenerse en la infraestructura
• Sesión SSH interactiva
 ¿Requisitos para mi operador?
 ¿Cómo encripto los datos de conexión SSH?
• Airflow proporciona módulos de conexión llamados Hooks
1 Crear una conexión SSH con nuestro usuario propio
en la interfaz de Airflow
mi_conexion
2 Utilizar estos datos de conexión desde el código
from airflow.contrib.hook import SSHHook
mi_hook = SSHHook ( “mi_conexion” )
mi_hook.host
mi_hook.login
mi_hook.password
Librería pxssh
Fernando Gandia
 ¿Cómo hago de mi solución un operador de Airflow?
Creo un fichero
.py
Plugins
Folder
from airflow.plugins_manager import AirflowPlugin
class myOperador (BaseOperator)
def __init__ (argumentos_del_operador)
def execute
def on_kill
class myPlugin(AirflowPlugin)
name = “myPlugin”
operators = [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 comunicación
 DAG’s
 ¿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 orígenes de datos definidos.
Fernando Gandia
Browse Comprobar el estado de ejecución de un elemento en particular
Fernando Gandia
Admin Administración de la plataforma, orígenes de datos y variables
Fernando Gandia
 Conceptos generales
 La plataforma
 Sus componentes principales
 Interfaces de comunicación
 DAG’s
 ¿Como se especifican?
 ¿Como se importan en la plataforma?
 ¿Como se ejecutan y se prueban?
 Operadores
 Por defecto
 Propios
 Interfaz de usuario
 Ejemplos

Más contenido relacionado

La actualidad más candente

.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y RendimientoEduard Tomàs
 
Escalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEscalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEduard Tomàs
 
Primeros pasos con Apache Spark - Madrid Meetup
Primeros pasos con Apache Spark - Madrid MeetupPrimeros pasos con Apache Spark - Madrid Meetup
Primeros pasos con Apache Spark - Madrid Meetupdhiguero
 
Links kubernetes - Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes
Links kubernetes - Evento - Virtual Lab Despliegue de aplicaciones en KubernetesLinks kubernetes - Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes
Links kubernetes - Evento - Virtual Lab Despliegue de aplicaciones en KubernetesJulio Pari
 
Terraspace, the definitive terraform framework
Terraspace, the definitive terraform frameworkTerraspace, the definitive terraform framework
Terraspace, the definitive terraform frameworkMario IC
 
Docker para aplicaciones angular
Docker para aplicaciones angularDocker para aplicaciones angular
Docker para aplicaciones angularGermán Küber
 

La actualidad más candente (8)

.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y Rendimiento
 
Escalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEscalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con Keda
 
Primeros pasos con Apache Spark - Madrid Meetup
Primeros pasos con Apache Spark - Madrid MeetupPrimeros pasos con Apache Spark - Madrid Meetup
Primeros pasos con Apache Spark - Madrid Meetup
 
Links kubernetes - Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes
Links kubernetes - Evento - Virtual Lab Despliegue de aplicaciones en KubernetesLinks kubernetes - Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes
Links kubernetes - Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes
 
React Context API - Álvaro Ortiz
React Context API - Álvaro OrtizReact Context API - Álvaro Ortiz
React Context API - Álvaro Ortiz
 
Terraspace, the definitive terraform framework
Terraspace, the definitive terraform frameworkTerraspace, the definitive terraform framework
Terraspace, the definitive terraform framework
 
Introducción a ASP.NET Web API
Introducción a ASP.NET Web APIIntroducción a ASP.NET Web API
Introducción a ASP.NET Web API
 
Docker para aplicaciones angular
Docker para aplicaciones angularDocker para aplicaciones angular
Docker para aplicaciones angular
 

Destacado

How I learned to time travel, or, data pipelining and scheduling with Airflow
How I learned to time travel, or, data pipelining and scheduling with AirflowHow I learned to time travel, or, data pipelining and scheduling with Airflow
How I learned to time travel, or, data pipelining and scheduling with AirflowPyData
 
Building Robust Pipelines with Airflow | Wrangle Conference 2017
Building Robust Pipelines with Airflow | Wrangle Conference 2017Building Robust Pipelines with Airflow | Wrangle Conference 2017
Building Robust Pipelines with Airflow | Wrangle Conference 2017Cloudera, Inc.
 
Running Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on HadoopRunning Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on Hadoopclairvoyantllc
 
Building Robust Pipelines with Airflow
Building Robust Pipelines with AirflowBuilding Robust Pipelines with Airflow
Building Robust Pipelines with AirflowErin Shellman
 
Introduction to Apache Airflow - Data Day Seattle 2016
Introduction to Apache Airflow - Data Day Seattle 2016Introduction to Apache Airflow - Data Day Seattle 2016
Introduction to Apache Airflow - Data Day Seattle 2016Sid Anand
 
Airflow - a data flow engine
Airflow - a data flow engineAirflow - a data flow engine
Airflow - a data flow engineWalter Liu
 
Airflow - An Open Source Platform to Author and Monitor Data Pipelines
Airflow - An Open Source Platform to Author and Monitor Data PipelinesAirflow - An Open Source Platform to Author and Monitor Data Pipelines
Airflow - An Open Source Platform to Author and Monitor Data PipelinesDataWorks Summit
 

Destacado (8)

How I learned to time travel, or, data pipelining and scheduling with Airflow
How I learned to time travel, or, data pipelining and scheduling with AirflowHow I learned to time travel, or, data pipelining and scheduling with Airflow
How I learned to time travel, or, data pipelining and scheduling with Airflow
 
Building Robust Pipelines with Airflow | Wrangle Conference 2017
Building Robust Pipelines with Airflow | Wrangle Conference 2017Building Robust Pipelines with Airflow | Wrangle Conference 2017
Building Robust Pipelines with Airflow | Wrangle Conference 2017
 
Running Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on HadoopRunning Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on Hadoop
 
Apache Airflow
Apache AirflowApache Airflow
Apache Airflow
 
Building Robust Pipelines with Airflow
Building Robust Pipelines with AirflowBuilding Robust Pipelines with Airflow
Building Robust Pipelines with Airflow
 
Introduction to Apache Airflow - Data Day Seattle 2016
Introduction to Apache Airflow - Data Day Seattle 2016Introduction to Apache Airflow - Data Day Seattle 2016
Introduction to Apache Airflow - Data Day Seattle 2016
 
Airflow - a data flow engine
Airflow - a data flow engineAirflow - a data flow engine
Airflow - a data flow engine
 
Airflow - An Open Source Platform to Author and Monitor Data Pipelines
Airflow - An Open Source Platform to Author and Monitor Data PipelinesAirflow - An Open Source Platform to Author and Monitor Data Pipelines
Airflow - An Open Source Platform to Author and Monitor Data Pipelines
 

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

Remote System Controller with Android technologies
Remote System Controller with Android technologiesRemote System Controller with Android technologies
Remote System Controller with Android technologiesMiguel Garcia Ponce
 
Proyecto monitorización nagios_felix
Proyecto monitorización nagios_felixProyecto monitorización nagios_felix
Proyecto monitorización nagios_felixFélix Aranda Palma
 
Python en Android,Charla del FUDcon Latam 2012
Python en Android,Charla del FUDcon Latam 2012Python en Android,Charla del FUDcon Latam 2012
Python en Android,Charla del FUDcon Latam 2012Ernesto Crespo
 
Sistemas SCADA Overview USMP
Sistemas SCADA Overview USMPSistemas SCADA Overview USMP
Sistemas SCADA Overview USMPjdgarciag1
 
Router os basicsv0 3espanol-mikrotik
Router os basicsv0 3espanol-mikrotikRouter os basicsv0 3espanol-mikrotik
Router os basicsv0 3espanol-mikrotikJulians Crystal
 
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas  de rendimiento de Aplicaciones WebPylot : Herramienta para pruebas  de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones WebDeisy Sapaico
 
Curso Android Tema 2
Curso Android Tema 2Curso Android Tema 2
Curso Android Tema 2Frank Jorge
 
Lenguaje Borland C - Estructura y Componentes
Lenguaje Borland C - Estructura y ComponentesLenguaje Borland C - Estructura y Componentes
Lenguaje Borland C - Estructura y ComponentesKarina Arguedas Ruelas
 
Mikrotik RouterOs basics v0.3
Mikrotik RouterOs basics v0.3Mikrotik RouterOs basics v0.3
Mikrotik RouterOs basics v0.3Rod Hinojosa
 
Manual de instalacion dhcp
Manual de instalacion dhcpManual de instalacion dhcp
Manual de instalacion dhcpAndres Ldño
 
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboardsTaller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboardsSofia2 Smart Platform
 

Similar a Fernando Gandia - Airflow - PyData Mallorca 18-10-2016 (20)

Programacion
ProgramacionProgramacion
Programacion
 
Procesos.pptx
Procesos.pptxProcesos.pptx
Procesos.pptx
 
Herramientas Open Source
Herramientas Open SourceHerramientas Open Source
Herramientas Open Source
 
Remote System Controller with Android technologies
Remote System Controller with Android technologiesRemote System Controller with Android technologies
Remote System Controller with Android technologies
 
Proyecto monitorización nagios_felix
Proyecto monitorización nagios_felixProyecto monitorización nagios_felix
Proyecto monitorización nagios_felix
 
Fase4 301402 48
Fase4 301402  48Fase4 301402  48
Fase4 301402 48
 
Mrtg ubuntu
Mrtg ubuntuMrtg ubuntu
Mrtg ubuntu
 
Tutorial hacer un crud con prado
Tutorial hacer un crud con pradoTutorial hacer un crud con prado
Tutorial hacer un crud con prado
 
Python en Android,Charla del FUDcon Latam 2012
Python en Android,Charla del FUDcon Latam 2012Python en Android,Charla del FUDcon Latam 2012
Python en Android,Charla del FUDcon Latam 2012
 
Sistemas SCADA Overview USMP
Sistemas SCADA Overview USMPSistemas SCADA Overview USMP
Sistemas SCADA Overview USMP
 
Router os basicsv0 3espanol-mikrotik
Router os basicsv0 3espanol-mikrotikRouter os basicsv0 3espanol-mikrotik
Router os basicsv0 3espanol-mikrotik
 
Nagios
NagiosNagios
Nagios
 
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas  de rendimiento de Aplicaciones WebPylot : Herramienta para pruebas  de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
 
Curso Android Tema 2
Curso Android Tema 2Curso Android Tema 2
Curso Android Tema 2
 
Comandos de red
Comandos de redComandos de red
Comandos de red
 
Lenguaje Borland C - Estructura y Componentes
Lenguaje Borland C - Estructura y ComponentesLenguaje Borland C - Estructura y Componentes
Lenguaje Borland C - Estructura y Componentes
 
Mikrotik RouterOs basics v0.3
Mikrotik RouterOs basics v0.3Mikrotik RouterOs basics v0.3
Mikrotik RouterOs basics v0.3
 
Manual de instalacion dhcp
Manual de instalacion dhcpManual de instalacion dhcp
Manual de instalacion dhcp
 
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboardsTaller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
Taller IoT: desarrollo visual en Sofia2 con Raspberry Pi, Node-RED y dashboards
 
Cacti
CactiCacti
Cacti
 

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

  • 2. Fernando Gandia  Conceptos generales  La plataforma  Sus componentes principales  Interfaces de comunicación  DAG’s  ¿Como se especifican?  ¿Como se importan en la plataforma?  ¿Como se ejecutan y se prueban?  Operadores  Por defecto  Propios  Interfaz de usuario  Ejemplos
  • 3. 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.
  • 4. Fernando Gandia  ¿La esencia de Airflow? DAG (Directed Acyclic Graphs): Colección de tareas, organizadas de tal manera, que queden reflejadas sus relaciones y dependencias. Grafo acíclico dirigido: Las aristas tienen un sentido definido. No tiene ciclos. Se especifican en ficheros Python
  • 5. Fernando Gandia  Conceptos generales  La plataforma  Sus componentes principales  Interfaces de comunicación  DAG’s  ¿Como se especifican?  ¿Como se importan en la plataforma?  ¿Como se ejecutan y se prueban?  Operadores  Por defecto  Propios  Interfaz de usuario  Ejemplos
  • 6. Fernando Gandia Comando airflow initdb Comando airflow scheduler Comando airflow webserver –p <puerto> Web Server Scheduler DataBase
  • 7. Fernando Gandia Command Line Interface Web User Interface
  • 8. Fernando Gandia  Conceptos generales  La plataforma  Sus componentes principales  Interfaces de comunicación  DAG’s  ¿Como se especifican?  ¿Como se importan en la plataforma?  ¿Como se ejecutan y se prueban?  Operadores  Por defecto  Propios  Interfaz de usuario  Ejemplos
  • 9. Fernando Gandia Importar módulos. Diccionario de argumentos Instanciar el DAG Crear cada tarea, asignándole un tipo de operador y sus correspondientes parámetros. Especificar relaciones y dependencias. 1 2 3 4 5
  • 10. 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 automáticamente en la UI Scheduler 1 2 3
  • 11. Fernando Gandia Por defecto, al importar un DAG, inicialmente la temporización del mismo está encendida. A menos que, en las opciones de configuración hayamos desactivado dicha característica.
  • 12. Fernando Gandia Si hemos especificado una fecha de inicio, se llevan a cabo ejecuciones de relleno hasta la fecha actual
  • 13. Fernando Gandia python dag_file.pyCompilar airflow test dag_id task_id execution_date Ejecutar una tarea específica airflow backfill dag_id –s start_date –e end_dateEjecutar DAG
  • 14. Fernando Gandia  Conceptos generales  La plataforma  Sus componentes principales  Interfaces de comunicación  DAG’s  ¿Como se especifican?  ¿Como se importan en la plataforma?  ¿Como se ejecutan y se prueban?  Operadores  Por defecto  Propios  Interfaz de usuario  Ejemplos
  • 15. Fernando Gandia Llevan a cabo una acción o le indican a otro sistema que la realice. 3 tipos de operadores Transfieren datos de un sistema a otro Sensores que se mantienen en ejecución hasta que se lleva a cabo cierta condición Tipo 1 Tipo 2 Tipo 3
  • 17. Fernando Gandia  ¿Qué necesidad debía cubrir? Trata con datos de Hive o Impala a través de scripts de Python / PySpark desde un entorno de Airflow remoto. SSHExecuteOperator Opción 1 Entorno Airflow Dag Infraestructura de datos y procesamiento distribuido Puerto 22 Python / PySpark Hive Bash Impala Librerías , Scripts HDFS Ssh Si se interrumpe la tarea se mantiene la ejecución en la insfraestructura  ¿Qué opciones me aportaba Airflow?
  • 18. Fernando Gandia  ¿Qué necesidad debía cubrir? Trata con datos de Hive o Impala a través de scripts de Python / PySpark desde un entorno de Airflow remoto.  ¿Qué opciones me aportaba Airflow? SSHExecuteOperator BashOperator Python Librerías , Scripts Impyla Opción 2 Opción 1 Entorno Airflow Dag Infraestructura de datos y procesamiento distribuido Puerto 22 Python / PySpark Hive Bash Impala Librerías , 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
  • 19. Fernando Gandia  ¿Qué necesidad debía cubrir? Trata con datos de Hive o Impala a través de scripts de Python / PySpark desde un entorno de Airflow remoto.  ¿Qué opciones me aportaba Airflow? ODBC SSHExecuteOperator BashOperator Python Librerías , Scripts Impyla Opción 2 Opción 3 HiveOperator Hive - Beeline Hadoop ODBC Opción 1 Entorno Airflow Dag Infraestructura de datos y procesamiento distribuido Puerto 22 Python / PySpark Hive Bash Impala Librerías , Scripts HDFS Ssh HiveServerPuerto 1000 Se necesita tener Hadoop y Hive instalados en mismo entorno Airflow
  • 20. Fernando Gandia • No instalar nada mas en el entorno Airflow • Los datos y los scripts debían mantenerse en la infraestructura • Sesión SSH interactiva  ¿Requisitos para mi operador?  ¿Cómo encripto los datos de conexión SSH? • Airflow proporciona módulos de conexión llamados Hooks 1 Crear una conexión SSH con nuestro usuario propio en la interfaz de Airflow mi_conexion 2 Utilizar estos datos de conexión desde el código from airflow.contrib.hook import SSHHook mi_hook = SSHHook ( “mi_conexion” ) mi_hook.host mi_hook.login mi_hook.password Librería pxssh
  • 21. Fernando Gandia  ¿Cómo hago de mi solución un operador de Airflow? Creo un fichero .py Plugins Folder from airflow.plugins_manager import AirflowPlugin class myOperador (BaseOperator) def __init__ (argumentos_del_operador) def execute def on_kill class myPlugin(AirflowPlugin) name = “myPlugin” operators = [myOperador] flask_blueprint = [] hook = [] executors = [] … super (myOperador, self).__init__(*args,**kwargs) Copiar fichero .py en la carpeta plugins 1 2
  • 22. Fernando Gandia  Conceptos generales  La plataforma  Sus componentes principales  Interfaces de comunicación  DAG’s  ¿Como se especifican?  ¿Como se importan en la plataforma?  ¿Como se ejecutan y se prueban?  Operadores  Por defecto  Propios  Interfaz de usuario  Ejemplos
  • 23. Fernando Gandia DAGS Resumen del estado de todos los DAGS.
  • 24. Fernando Gandia Data Profiling Querys sobre los orígenes de datos definidos.
  • 25. Fernando Gandia Browse Comprobar el estado de ejecución de un elemento en particular
  • 26. Fernando Gandia Admin Administración de la plataforma, orígenes de datos y variables
  • 27. Fernando Gandia  Conceptos generales  La plataforma  Sus componentes principales  Interfaces de comunicación  DAG’s  ¿Como se especifican?  ¿Como se importan en la plataforma?  ¿Como se ejecutan y se prueban?  Operadores  Por defecto  Propios  Interfaz de usuario  Ejemplos