Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Python y Flink

347 views

Published on

El pasado 17 de mayo se celebró en las oficinas de Paradigma Digital el meetup mensual del grupo Python Madrid. Pablo González Fuente, de GMV, nos habló de Python y Flink.

Vídeo del evento: https://www.youtube.com/watch?v=HPfNDL-jIGM

Published in: Data & Analytics
  • Be the first to comment

  • Be the first to like this

Python y Flink

  1. 1. © GMV, 2016 Propiedad de GMV Todos los derechos reservados PYTHON Y FLINK Madrid Python Meetup
  2. 2. Madrid Python Meetup 2016/03/10 Página 2 ÍNDICE INTRODUCCIÓN APACHE FLINK EXPERIENCIA PYTHON CONCLUSIONES
  3. 3. ¿QUIÉNES SOMOS? GMV
  4. 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
  5. 5. INTRODUCCIÓN
  6. 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. 7. Madrid Python Meetup 2016/03/10 Página 9 MADUREZ DEL BIGDATA ¿POR QUÉ APACHE FLINK? Descartar Almacenar Procesar Streaming
  8. 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. 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
  10. 10. ¿PORQUÉ APACHE FLINK?
  11. 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. 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. 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. 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. 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. 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. 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
  18. 18. EXPERIENCIA CONPYTHON
  19. 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. 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. 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. 22. Madrid Python Meetup 2016/03/10 Página 24 CONCLUSIONES EXPERIENCIA CON PYTHON
  23. 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)
  24. 24. BACKUP SLIDES GMV
  25. 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. 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. 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. 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. 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. 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. 31. Madrid Python Meetup 2016/03/10 Página 57 CONSTRUCCIÓN DE VENTANAS VENTANAS

×