SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
© GMV, 2016 Propiedad de GMV
Todos los derechos reservados
PYTHON Y FLINK
Madrid Python Meetup
Madrid Python Meetup 2016/03/10 Página 2
ÍNDICE INTRODUCCIÓN
APACHE FLINK
EXPERIENCIA PYTHON
CONCLUSIONES
¿QUIÉNES
SOMOS?
GMV
Madrid Python Meetup 2016/03/10 Página 4
UN GRUPO TECNOLÓGICO
GLOBAL
Grupo
multinacional
tecnológico
Fundado en
1984
Capital
privado
Sede principal
en España
(Madrid)
Oficinas en 10 países
Más de 1.100
empleados
Origen
vinculado
al sector
espacial y
defensa
Aeronáutica, Espacio, Defensa,
Seguridad, Sanidad, Transporte,
Banca y finanzas, y Tecnologías de la
Información y la Comunicación
Ingeniería, desarrollo
e integración de
sistemas, software,
hardware, servicios y
productos
especializados
QUIÉNES SOMOS
INTRODUCCIÓN
Madrid Python Meetup 2016/03/10 Página 8
ACLARACIONES
INTRODUCCIÓN
Apache Flink no es un
servidor web ni un jefe indio
No vamos a contar palabras
¿Qué sabéis de Big Data?
Madrid Python Meetup 2016/03/10 Página 9
MADUREZ DEL BIGDATA
¿POR QUÉ APACHE FLINK?
Descartar
Almacenar
Procesar
Streaming
Madrid Python Meetup 2016/03/10 Página 10
ARQUITECTURA TÍPICA
¿POR QUÉ APACHE FLINK?
Data
adquisition
Stream Processing Serving DB
• Es común almacenar también la información en crudo
• La base de la arquitectura suele ser un clúster con HDFS
Madrid Python Meetup 2016/03/10 Página 11
DESPLIEGUE
¿POR QUÉ APACHE FLINK?
W1
W2
W3
W4
Wn
M1
Clúster de HDFS + Flink
K1 K2 Kn
Clúster de Kafka
C3C1 C2
C5C4 C6
Clúster de Cassandra
W5
W6
¿PORQUÉ
APACHE
FLINK?
Madrid Python Meetup 2016/03/10 Página 13
APACHE FLINK
¿POR QUÉ APACHE FLINK?
El core de Flink es un motor
de procesamiento de flujos
de datos en streaming.
Proporciona distribución de los
datos, comunicación y tolerancia
a fallos para realizar
computación distribuida con
streams de datos.
Sobre ese core se han
desarollado dos API y varias
librerías en Scala, Java y Python
Madrid Python Meetup 2016/03/10 Página 14
VENTANAS
FLINK: CARACTERÍSTICAS DIFERENCIADORAS
5 2 6 3 7 5 3 8 2 1 9 4
5 2 6 3 7 5 3 8 2 1 9 4
5 2 6 3 7 5 3 8 2 1 9 4
5 2 6 3 7 5 3 8 2 1 9 4
Ventanas temporales
Ventanas deslizantes
16 23 16
16 21 23 14 16
1s2s
stream.timeWindowAll(Time.seconds(1)).
sum();
stream.timeWindowAll(Time.seconds(1),T
ime.milliseconds(500)).sum();
Madrid Python Meetup 2016/03/10 Página 15
(A,5) (A,6) (A,5) (A,1)
VENTANAS POR CLAVE
FLINK: CARACTERÍSTICAS DIFERENCIADORAS
(A,5) (B,2) (A,6) (C,3) (C,7) (A,5) (B,3) (C,8) (B,2) (A,1) (C,9) (B,4)
Ventanas fijas por clave
1s2s
(B,2) (B,3) (B,2) (B,4)
(C,3) (C,7) (C,8) (C,9)
(A,5) (A,6) (A,5) (A,1)
(B,2) (B,3) (B,2) (B,4)
(C,3) (C,7) (C,8) (C,9)
(A,11)(B,2)(C,3) (A,5)(B,3)(C,15) (A,1)(B,6)(C,9)
(A,11)(B,5) (C,10) (A,6) (C,17) (B,6)
Ventanas por número de elementos
stream.keyBy(0).timeWindow
(Time.seconds(1)).sum(1)
stream.keyBy(0).countWindow(
2).sum(1)
Madrid Python Meetup 2016/03/10 Página 16
TRIGGERS Y EVICTORS
DATASTREAM API
5 2 9 9 7 0 3 8 2 A 9 4
20 18
Pueden cancelar el procesado de los
elementos de una ventana
Permiten adelantar el procesado de una
ventana
5 2 9 9 7 -1 3 8 2 1 9 4
25 18 16
Podemos controlar los elementos que
llegan de las ventanas antes de
evaluarlos
Triggers
Evictors
7 3 8
Madrid Python Meetup 2016/03/10 Página 17
EL TIEMPO ES IMPORTANTE
DATASTREAM API
¿Qué tiempo utilizar para construir las ventanas?
El momento en el que se
generó el evento
El momento en que se
recibe el evento
El momento en que se
procesa el evento
Flink maneja relojes diferentes para cada
uno de ellos
Madrid Python Meetup 2016/03/10 Página 18
RENDIMIENTO
COMPARATIVA
• Lo deseable es mantener un alto caudal con una latencia baja
• Flink permite ajustar los tamaños de los buffers internos para
aumentar el caudal a costa de aumentar la latencia y
viceversa.
Madrid Python Meetup 2016/03/10 Página 19
FUNCIONALIDADES
COMPARATIVA
Streaming “true” mini batches “true”
API low-level high-level high-level
Fault tolerance tuple-level ACKs RDD-based (lineage) coarse checkpointing
State not built-in external internal
Exactly once at least once exactly once exactly once
Windowing not built-in restricted flexible
Latency low medium low
Throughput medium high high
EXPERIENCIA
CONPYTHON
Madrid Python Meetup 2016/03/10 Página 21
SEGÚN LA DOCUMENTACIÓN
EXPERIENCIA CON PYTHON
La mayoría de las API no están
disponibles.
¡¡No está disponible la API
para Streams!!
El API para procesado en batch
tiene todas las operaciones
(alguna más que en scala)
Los conectores de E/S son
muchos menos y con menos
opciones
Madrid Python Meetup 2016/03/10 Página 22
PRUEBA BÁSICA
EXPERIENCIA CON PYTHON
class Adder(GroupReduceFunction):
def reduce(self, iterator, collector):
count, event = iterator.next()
count += sum([x[0] for x in iterator])
collector.collect((event, count))
if __name__ == "__main__":
output_file = 'out.txt'
env = get_environment()
data =
env.read_csv("/home/jordi/Development/python-
flink/final-dataset.csv",
(INT, STRING, STRING, STRING, STRING, STRING,
STRING, STRING, BOOL, BOOL, INT, INT, INT, INT,
STRING, INT, INT, STRING, STRING, FLOAT, FLOAT,
STRING))
data 
.map(lambda x: (1, x[5])) 
.group_by(1) 
.reduce_group(Adder()) 
.map(lambda x: 'Event: %s. Freq: %s' % (x[0],x[1]))
.write_text(output_file,write_mode=WriteMode.OVERWRITE)
env.execute(local=True)
El rendimiento es más bajo que el
mismo programa en scala.
Levanta un intérprete Python que
envía el código al core de Flink
Madrid Python Meetup 2016/03/10 Página 23
POCA ACIVIDAD
EXPERIENCIA CON PYTHON
El último commit de la parte de Python fue hace varios meses:
En proporción, hay muy poco código Python:
Madrid Python Meetup 2016/03/10 Página 24
CONCLUSIONES
EXPERIENCIA CON PYTHON
www.gmv.es
www.facebook.com/infoGMV
@infoGMV_es
www.linkedin.com/company/gmv
GRACIAS
José Carlos Baquero (jcbaquero@gmv.com)
Pablo González (pagonzalez@gmv.com)
Jordi Redondo (jredondo@gmv.com)
BACKUP
SLIDES
GMV
Madrid Python Meetup 2016/03/10 Página 51
TERASORT
PERFORMANCE
Terasort es una prueba para medir el rendimiento de tecnologías
BigData. Se trata de ordenar 1 Tb de datos (o más) en el menor
tiempo posible
http://eastcirclek.blogspot.com.es/2015/06/terasort-for-spark-and-flink-with-range.html
Madrid Python Meetup 2016/03/10 Página 52
TERASORT
PERFORMANCE
http://eastcirclek.blogspot.com.es/2015/06/terasort-for-spark-and-flink-with-range.html
Madrid Python Meetup 2016/03/10 Página 53
STREAMING - YAHOO
PERFORMANCE
https://yahooeng.tumblr.com/post/135321837876/benchmarking-streaming-computation-engines-at
The job of the benchmark is to read various JSON events from Kafka, identify the
relevant events, and store a windowed count of relevant events per campaign
into Redis.
Madrid Python Meetup 2016/03/10 Página 54
STREAMING - YAHOO
PERFORMANCE
https://yahooeng.tumblr.com/post/135321837876/benchmarking-streaming-computation-engines-at
Madrid Python Meetup 2016/03/10 Página 55
STREAMING - YAHOO
PERFORMANCE
https://yahooeng.tumblr.com/post/135321837876/benchmarking-streaming-computation-engines-at
Madrid Python Meetup 2016/03/10 Página 56
CONSTRUCCIÓN DE VENTANAS
VENTANAS
http://data-artisans.com/how-apache-flink-enables-new-streaming-applications-part-1/
Madrid Python Meetup 2016/03/10 Página 57
CONSTRUCCIÓN DE VENTANAS
VENTANAS

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (6)

Exposición Python
Exposición PythonExposición Python
Exposición Python
 
Pablo González - Jugando a lo Super Mario entre túneles y máquinas [rooted2018]
Pablo González - Jugando a lo Super Mario entre túneles y máquinas [rooted2018]Pablo González - Jugando a lo Super Mario entre túneles y máquinas [rooted2018]
Pablo González - Jugando a lo Super Mario entre túneles y máquinas [rooted2018]
 
Interbloqueos salcedo carrero.doc
Interbloqueos salcedo carrero.docInterbloqueos salcedo carrero.doc
Interbloqueos salcedo carrero.doc
 
Introduccion a Python
Introduccion a PythonIntroduccion a Python
Introduccion a Python
 
Quita, que tú no sabes; ya lo hago yo. Generación e inyección de código en ti...
Quita, que tú no sabes; ya lo hago yo. Generación e inyección de código en ti...Quita, que tú no sabes; ya lo hago yo. Generación e inyección de código en ti...
Quita, que tú no sabes; ya lo hago yo. Generación e inyección de código en ti...
 
Ejercicios propuestos 10
Ejercicios propuestos 10Ejercicios propuestos 10
Ejercicios propuestos 10
 

Andere mochten auch

[PyCon 2014 APAC] How to integrate python into a scala stack to build realtim...
[PyCon 2014 APAC] How to integrate python into a scala stack to build realtim...[PyCon 2014 APAC] How to integrate python into a scala stack to build realtim...
[PyCon 2014 APAC] How to integrate python into a scala stack to build realtim...
Jerry Chou
 
How to integrate python into a scala stack
How to integrate python into a scala stackHow to integrate python into a scala stack
How to integrate python into a scala stack
Fliptop
 

Andere mochten auch (20)

Overview atlas (1)
Overview atlas (1)Overview atlas (1)
Overview atlas (1)
 
Kafka y python
Kafka y pythonKafka y python
Kafka y python
 
Cómo usar google analytics
Cómo usar google analyticsCómo usar google analytics
Cómo usar google analytics
 
Transformación Digital
Transformación DigitalTransformación Digital
Transformación Digital
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
 
Cultura Digital Paradigma
Cultura Digital ParadigmaCultura Digital Paradigma
Cultura Digital Paradigma
 
[PyCon 2014 APAC] How to integrate python into a scala stack to build realtim...
[PyCon 2014 APAC] How to integrate python into a scala stack to build realtim...[PyCon 2014 APAC] How to integrate python into a scala stack to build realtim...
[PyCon 2014 APAC] How to integrate python into a scala stack to build realtim...
 
Analysis of Websites as Graphs for SEO
Analysis of Websites as Graphs for SEOAnalysis of Websites as Graphs for SEO
Analysis of Websites as Graphs for SEO
 
Use Groovy&Grails in your spring boot projects
Use Groovy&Grails in your spring boot projectsUse Groovy&Grails in your spring boot projects
Use Groovy&Grails in your spring boot projects
 
Manuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4octManuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4oct
 
Google Analytics for Developers
Google Analytics for DevelopersGoogle Analytics for Developers
Google Analytics for Developers
 
Programación Reactiva con RxJava
Programación Reactiva con RxJavaProgramación Reactiva con RxJava
Programación Reactiva con RxJava
 
How to integrate python into a scala stack
How to integrate python into a scala stackHow to integrate python into a scala stack
How to integrate python into a scala stack
 
¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?
 
HTML5 Web Components
HTML5 Web ComponentsHTML5 Web Components
HTML5 Web Components
 
Introducción a Kubernetes
Introducción a KubernetesIntroducción a Kubernetes
Introducción a Kubernetes
 
Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a Django
 
Communication between Java and Python
Communication between Java and PythonCommunication between Java and Python
Communication between Java and Python
 
Python to scala
Python to scalaPython to scala
Python to scala
 
Mixing Python and Java
Mixing Python and JavaMixing Python and Java
Mixing Python and Java
 

Ähnlich wie Python y Flink

Php02 fundamentos de php
Php02 fundamentos de phpPhp02 fundamentos de php
Php02 fundamentos de php
Julio Pari
 
0157 genexus full_throttling
0157 genexus full_throttling0157 genexus full_throttling
0157 genexus full_throttling
GeneXus
 
0157 genexus full_throttling
0157 genexus full_throttling0157 genexus full_throttling
0157 genexus full_throttling
GeneXus
 

Ähnlich wie Python y Flink (20)

Gestión y Análisis de Datos para las Ciencias Económicas con Python y R
Gestión y Análisis de Datos para las Ciencias Económicas con Python y RGestión y Análisis de Datos para las Ciencias Económicas con Python y R
Gestión y Análisis de Datos para las Ciencias Económicas con Python y R
 
Revelando los secretos de twitter, Festival de Software Libre 2014
Revelando los secretos de twitter, Festival de Software Libre 2014Revelando los secretos de twitter, Festival de Software Libre 2014
Revelando los secretos de twitter, Festival de Software Libre 2014
 
Cloud Computing y MapReduce
Cloud Computing y MapReduceCloud Computing y MapReduce
Cloud Computing y MapReduce
 
Presentacion scraping
Presentacion scrapingPresentacion scraping
Presentacion scraping
 
Real-Time y Big Data: descubre el poder de tus datos
Real-Time y Big Data: descubre el poder de tus datosReal-Time y Big Data: descubre el poder de tus datos
Real-Time y Big Data: descubre el poder de tus datos
 
Python vs Java (NotBarraLibreCamp)
Python vs Java (NotBarraLibreCamp)Python vs Java (NotBarraLibreCamp)
Python vs Java (NotBarraLibreCamp)
 
Mariluz Congosto (2019). Social network analysis: una herramienta para desenm...
Mariluz Congosto (2019). Social network analysis: una herramienta para desenm...Mariluz Congosto (2019). Social network analysis: una herramienta para desenm...
Mariluz Congosto (2019). Social network analysis: una herramienta para desenm...
 
Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014
Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014
Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014
 
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
 
Primeros pasos con Spark - Spark Meetup Madrid 30-09-2014
Primeros pasos con Spark - Spark Meetup Madrid 30-09-2014Primeros pasos con Spark - Spark Meetup Madrid 30-09-2014
Primeros pasos con Spark - Spark Meetup Madrid 30-09-2014
 
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
 
Aula Virtual utilizando utilizando Conference XP de Microsoft
Aula Virtual utilizando utilizando Conference XP de MicrosoftAula Virtual utilizando utilizando Conference XP de Microsoft
Aula Virtual utilizando utilizando Conference XP de Microsoft
 
Construyendo un proyecto_de_iot
Construyendo un proyecto_de_iotConstruyendo un proyecto_de_iot
Construyendo un proyecto_de_iot
 
Php02 fundamentos de php
Php02 fundamentos de phpPhp02 fundamentos de php
Php02 fundamentos de php
 
Rackio framework
Rackio frameworkRackio framework
Rackio framework
 
Summer school python in spanish
Summer school python in spanishSummer school python in spanish
Summer school python in spanish
 
[Run Reloaded] Innovación y liderazgo (Pablo C. García + Jorge Rodríguez)
[Run Reloaded] Innovación y liderazgo (Pablo C. García + Jorge Rodríguez)[Run Reloaded] Innovación y liderazgo (Pablo C. García + Jorge Rodríguez)
[Run Reloaded] Innovación y liderazgo (Pablo C. García + Jorge Rodríguez)
 
Inteligencia del dato aplicada al negocio de las telecomunicaciones - LibreCo...
Inteligencia del dato aplicada al negocio de las telecomunicaciones - LibreCo...Inteligencia del dato aplicada al negocio de las telecomunicaciones - LibreCo...
Inteligencia del dato aplicada al negocio de las telecomunicaciones - LibreCo...
 
0157 genexus full_throttling
0157 genexus full_throttling0157 genexus full_throttling
0157 genexus full_throttling
 
0157 genexus full_throttling
0157 genexus full_throttling0157 genexus full_throttling
0157 genexus full_throttling
 

Mehr von Paradigma Digital

Mehr von Paradigma Digital (14)

Ddd + ah + microservicios
Ddd + ah + microserviciosDdd + ah + microservicios
Ddd + ah + microservicios
 
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
 
Have you met Istio?
Have you met Istio?Have you met Istio?
Have you met Istio?
 
Linkerd a fondo
Linkerd a fondoLinkerd a fondo
Linkerd a fondo
 
Horneando apis
Horneando apisHorneando apis
Horneando apis
 
Java 8 time to join the future
Java 8  time to join the futureJava 8  time to join the future
Java 8 time to join the future
 
Programación Reactiva con Spring WebFlux
Programación Reactiva con Spring WebFluxProgramación Reactiva con Spring WebFlux
Programación Reactiva con Spring WebFlux
 
Orquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace NetflixOrquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace Netflix
 
Meetup microservicios: API Management
Meetup microservicios: API ManagementMeetup microservicios: API Management
Meetup microservicios: API Management
 
Meetup de kubernetes, conceptos básicos.
Meetup  de kubernetes, conceptos básicos.Meetup  de kubernetes, conceptos básicos.
Meetup de kubernetes, conceptos básicos.
 
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptxDocker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
 
Implementando microservicios
Implementando microserviciosImplementando microservicios
Implementando microservicios
 
Equipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma DigitalEquipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma Digital
 
Seminario Apache Solr
Seminario Apache SolrSeminario Apache Solr
Seminario Apache Solr
 

Kürzlich hochgeladen

REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
IrapuatoCmovamos
 

Kürzlich hochgeladen (20)

Los primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdfLos primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdf
 
La Guerra Biologica - Emiliano Paico Vilchez.pdf
La Guerra Biologica - Emiliano Paico Vilchez.pdfLa Guerra Biologica - Emiliano Paico Vilchez.pdf
La Guerra Biologica - Emiliano Paico Vilchez.pdf
 
Principales Retos Demográficos de Puerto Rico
Principales Retos Demográficos de Puerto RicoPrincipales Retos Demográficos de Puerto Rico
Principales Retos Demográficos de Puerto Rico
 
El Manierismo. El Manierismo
El Manierismo.              El ManierismoEl Manierismo.              El Manierismo
El Manierismo. El Manierismo
 
Alfredo Gabriel Rodriguez Yajure Tarea#1
Alfredo Gabriel Rodriguez Yajure Tarea#1Alfredo Gabriel Rodriguez Yajure Tarea#1
Alfredo Gabriel Rodriguez Yajure Tarea#1
 
Las familias más ricas del medio oriente (2024).pdf
Las familias más ricas del medio oriente (2024).pdfLas familias más ricas del medio oriente (2024).pdf
Las familias más ricas del medio oriente (2024).pdf
 
Los idiomas más hablados en el mundo (2024).pdf
Los idiomas más hablados en el mundo  (2024).pdfLos idiomas más hablados en el mundo  (2024).pdf
Los idiomas más hablados en el mundo (2024).pdf
 
EPIDEMIO CANCER PULMON resumen nnn.pptx
EPIDEMIO CANCER PULMON  resumen nnn.pptxEPIDEMIO CANCER PULMON  resumen nnn.pptx
EPIDEMIO CANCER PULMON resumen nnn.pptx
 
variables-estadisticas. Presentación powerpoint
variables-estadisticas. Presentación powerpointvariables-estadisticas. Presentación powerpoint
variables-estadisticas. Presentación powerpoint
 
Sistema Nacional de Vigilancia en Salud Pública SIVIGILA
Sistema Nacional de Vigilancia en Salud Pública SIVIGILASistema Nacional de Vigilancia en Salud Pública SIVIGILA
Sistema Nacional de Vigilancia en Salud Pública SIVIGILA
 
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
 
Porcentaje de población blanca europea en Europa Occidental (1923-2024).pdf
Porcentaje de población blanca europea en Europa Occidental (1923-2024).pdfPorcentaje de población blanca europea en Europa Occidental (1923-2024).pdf
Porcentaje de población blanca europea en Europa Occidental (1923-2024).pdf
 
Las familias más ricas de África en el año (2024).pdf
Las familias más ricas de África en el año (2024).pdfLas familias más ricas de África en el año (2024).pdf
Las familias más ricas de África en el año (2024).pdf
 
Investigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdfInvestigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdf
 
ROMA Y EL IMPERIO, CIUDADES ANTIGUA ROMANAS
ROMA Y EL  IMPERIO, CIUDADES  ANTIGUA ROMANASROMA Y EL  IMPERIO, CIUDADES  ANTIGUA ROMANAS
ROMA Y EL IMPERIO, CIUDADES ANTIGUA ROMANAS
 
procedimiento paran la planificación en los centros educativos tipo v(multig...
procedimiento  paran la planificación en los centros educativos tipo v(multig...procedimiento  paran la planificación en los centros educativos tipo v(multig...
procedimiento paran la planificación en los centros educativos tipo v(multig...
 
max-weber-principales-aportes de la sociologia (2).pptx
max-weber-principales-aportes de la sociologia (2).pptxmax-weber-principales-aportes de la sociologia (2).pptx
max-weber-principales-aportes de la sociologia (2).pptx
 
6.3 Hidrologia Geomorfologia Cuenca.pptx
6.3 Hidrologia Geomorfologia Cuenca.pptx6.3 Hidrologia Geomorfologia Cuenca.pptx
6.3 Hidrologia Geomorfologia Cuenca.pptx
 
MARCO TEORICO, SEMINARIO DE INVESTIGACION,
MARCO TEORICO, SEMINARIO DE INVESTIGACION,MARCO TEORICO, SEMINARIO DE INVESTIGACION,
MARCO TEORICO, SEMINARIO DE INVESTIGACION,
 
Imágenes-de La-Inteligencia-Artificial-AnaliticayDatos-Beatriz-Garcia-Abril2024
Imágenes-de La-Inteligencia-Artificial-AnaliticayDatos-Beatriz-Garcia-Abril2024Imágenes-de La-Inteligencia-Artificial-AnaliticayDatos-Beatriz-Garcia-Abril2024
Imágenes-de La-Inteligencia-Artificial-AnaliticayDatos-Beatriz-Garcia-Abril2024
 

Python y Flink

  • 1. © GMV, 2016 Propiedad de GMV Todos los derechos reservados PYTHON Y FLINK Madrid Python Meetup
  • 2. Madrid Python Meetup 2016/03/10 Página 2 ÍNDICE INTRODUCCIÓN APACHE FLINK EXPERIENCIA PYTHON CONCLUSIONES
  • 4. Madrid Python Meetup 2016/03/10 Página 4 UN GRUPO TECNOLÓGICO GLOBAL Grupo multinacional tecnológico Fundado en 1984 Capital privado Sede principal en España (Madrid) Oficinas en 10 países Más de 1.100 empleados Origen vinculado al sector espacial y defensa Aeronáutica, Espacio, Defensa, Seguridad, Sanidad, Transporte, Banca y finanzas, y Tecnologías de la Información y la Comunicación Ingeniería, desarrollo e integración de sistemas, software, hardware, servicios y productos especializados QUIÉNES SOMOS
  • 6. Madrid Python Meetup 2016/03/10 Página 8 ACLARACIONES INTRODUCCIÓN Apache Flink no es un servidor web ni un jefe indio No vamos a contar palabras ¿Qué sabéis de Big Data?
  • 7. Madrid Python Meetup 2016/03/10 Página 9 MADUREZ DEL BIGDATA ¿POR QUÉ APACHE FLINK? Descartar Almacenar Procesar Streaming
  • 8. Madrid Python Meetup 2016/03/10 Página 10 ARQUITECTURA TÍPICA ¿POR QUÉ APACHE FLINK? Data adquisition Stream Processing Serving DB • Es común almacenar también la información en crudo • La base de la arquitectura suele ser un clúster con HDFS
  • 9. Madrid Python Meetup 2016/03/10 Página 11 DESPLIEGUE ¿POR QUÉ APACHE FLINK? W1 W2 W3 W4 Wn M1 Clúster de HDFS + Flink K1 K2 Kn Clúster de Kafka C3C1 C2 C5C4 C6 Clúster de Cassandra W5 W6
  • 11. Madrid Python Meetup 2016/03/10 Página 13 APACHE FLINK ¿POR QUÉ APACHE FLINK? El core de Flink es un motor de procesamiento de flujos de datos en streaming. Proporciona distribución de los datos, comunicación y tolerancia a fallos para realizar computación distribuida con streams de datos. Sobre ese core se han desarollado dos API y varias librerías en Scala, Java y Python
  • 12. Madrid Python Meetup 2016/03/10 Página 14 VENTANAS FLINK: CARACTERÍSTICAS DIFERENCIADORAS 5 2 6 3 7 5 3 8 2 1 9 4 5 2 6 3 7 5 3 8 2 1 9 4 5 2 6 3 7 5 3 8 2 1 9 4 5 2 6 3 7 5 3 8 2 1 9 4 Ventanas temporales Ventanas deslizantes 16 23 16 16 21 23 14 16 1s2s stream.timeWindowAll(Time.seconds(1)). sum(); stream.timeWindowAll(Time.seconds(1),T ime.milliseconds(500)).sum();
  • 13. Madrid Python Meetup 2016/03/10 Página 15 (A,5) (A,6) (A,5) (A,1) VENTANAS POR CLAVE FLINK: CARACTERÍSTICAS DIFERENCIADORAS (A,5) (B,2) (A,6) (C,3) (C,7) (A,5) (B,3) (C,8) (B,2) (A,1) (C,9) (B,4) Ventanas fijas por clave 1s2s (B,2) (B,3) (B,2) (B,4) (C,3) (C,7) (C,8) (C,9) (A,5) (A,6) (A,5) (A,1) (B,2) (B,3) (B,2) (B,4) (C,3) (C,7) (C,8) (C,9) (A,11)(B,2)(C,3) (A,5)(B,3)(C,15) (A,1)(B,6)(C,9) (A,11)(B,5) (C,10) (A,6) (C,17) (B,6) Ventanas por número de elementos stream.keyBy(0).timeWindow (Time.seconds(1)).sum(1) stream.keyBy(0).countWindow( 2).sum(1)
  • 14. Madrid Python Meetup 2016/03/10 Página 16 TRIGGERS Y EVICTORS DATASTREAM API 5 2 9 9 7 0 3 8 2 A 9 4 20 18 Pueden cancelar el procesado de los elementos de una ventana Permiten adelantar el procesado de una ventana 5 2 9 9 7 -1 3 8 2 1 9 4 25 18 16 Podemos controlar los elementos que llegan de las ventanas antes de evaluarlos Triggers Evictors 7 3 8
  • 15. Madrid Python Meetup 2016/03/10 Página 17 EL TIEMPO ES IMPORTANTE DATASTREAM API ¿Qué tiempo utilizar para construir las ventanas? El momento en el que se generó el evento El momento en que se recibe el evento El momento en que se procesa el evento Flink maneja relojes diferentes para cada uno de ellos
  • 16. Madrid Python Meetup 2016/03/10 Página 18 RENDIMIENTO COMPARATIVA • Lo deseable es mantener un alto caudal con una latencia baja • Flink permite ajustar los tamaños de los buffers internos para aumentar el caudal a costa de aumentar la latencia y viceversa.
  • 17. Madrid Python Meetup 2016/03/10 Página 19 FUNCIONALIDADES COMPARATIVA Streaming “true” mini batches “true” API low-level high-level high-level Fault tolerance tuple-level ACKs RDD-based (lineage) coarse checkpointing State not built-in external internal Exactly once at least once exactly once exactly once Windowing not built-in restricted flexible Latency low medium low Throughput medium high high
  • 19. Madrid Python Meetup 2016/03/10 Página 21 SEGÚN LA DOCUMENTACIÓN EXPERIENCIA CON PYTHON La mayoría de las API no están disponibles. ¡¡No está disponible la API para Streams!! El API para procesado en batch tiene todas las operaciones (alguna más que en scala) Los conectores de E/S son muchos menos y con menos opciones
  • 20. Madrid Python Meetup 2016/03/10 Página 22 PRUEBA BÁSICA EXPERIENCIA CON PYTHON class Adder(GroupReduceFunction): def reduce(self, iterator, collector): count, event = iterator.next() count += sum([x[0] for x in iterator]) collector.collect((event, count)) if __name__ == "__main__": output_file = 'out.txt' env = get_environment() data = env.read_csv("/home/jordi/Development/python- flink/final-dataset.csv", (INT, STRING, STRING, STRING, STRING, STRING, STRING, STRING, BOOL, BOOL, INT, INT, INT, INT, STRING, INT, INT, STRING, STRING, FLOAT, FLOAT, STRING)) data .map(lambda x: (1, x[5])) .group_by(1) .reduce_group(Adder()) .map(lambda x: 'Event: %s. Freq: %s' % (x[0],x[1])) .write_text(output_file,write_mode=WriteMode.OVERWRITE) env.execute(local=True) El rendimiento es más bajo que el mismo programa en scala. Levanta un intérprete Python que envía el código al core de Flink
  • 21. Madrid Python Meetup 2016/03/10 Página 23 POCA ACIVIDAD EXPERIENCIA CON PYTHON El último commit de la parte de Python fue hace varios meses: En proporción, hay muy poco código Python:
  • 22. Madrid Python Meetup 2016/03/10 Página 24 CONCLUSIONES EXPERIENCIA CON PYTHON
  • 23. www.gmv.es www.facebook.com/infoGMV @infoGMV_es www.linkedin.com/company/gmv GRACIAS José Carlos Baquero (jcbaquero@gmv.com) Pablo González (pagonzalez@gmv.com) Jordi Redondo (jredondo@gmv.com)
  • 25. Madrid Python Meetup 2016/03/10 Página 51 TERASORT PERFORMANCE Terasort es una prueba para medir el rendimiento de tecnologías BigData. Se trata de ordenar 1 Tb de datos (o más) en el menor tiempo posible http://eastcirclek.blogspot.com.es/2015/06/terasort-for-spark-and-flink-with-range.html
  • 26. Madrid Python Meetup 2016/03/10 Página 52 TERASORT PERFORMANCE http://eastcirclek.blogspot.com.es/2015/06/terasort-for-spark-and-flink-with-range.html
  • 27. Madrid Python Meetup 2016/03/10 Página 53 STREAMING - YAHOO PERFORMANCE https://yahooeng.tumblr.com/post/135321837876/benchmarking-streaming-computation-engines-at The job of the benchmark is to read various JSON events from Kafka, identify the relevant events, and store a windowed count of relevant events per campaign into Redis.
  • 28. Madrid Python Meetup 2016/03/10 Página 54 STREAMING - YAHOO PERFORMANCE https://yahooeng.tumblr.com/post/135321837876/benchmarking-streaming-computation-engines-at
  • 29. Madrid Python Meetup 2016/03/10 Página 55 STREAMING - YAHOO PERFORMANCE https://yahooeng.tumblr.com/post/135321837876/benchmarking-streaming-computation-engines-at
  • 30. Madrid Python Meetup 2016/03/10 Página 56 CONSTRUCCIÓN DE VENTANAS VENTANAS http://data-artisans.com/how-apache-flink-enables-new-streaming-applications-part-1/
  • 31. Madrid Python Meetup 2016/03/10 Página 57 CONSTRUCCIÓN DE VENTANAS VENTANAS