• No se han encontrado resultados

Madrid Python Meetup PYTHON Y FLINK

N/A
N/A
Protected

Academic year: 2021

Share "Madrid Python Meetup PYTHON Y FLINK"

Copied!
31
0
0

Texto completo

(1)
(2)
(3)

¿QUIÉNES

SOMOS?

(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

(5)

INTRODUCCIÓ

(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

(7)

MADUREZ DEL BIGDATA

Descartar

Almacenar

Procesar

(8)

Madrid Python Meetup 2016/03/10 Página 10

ARQUITECTURA TÍPICA

¿POR QUÉ APACHE FLINK?

Data

adquisition

Stream Processing

Serving DB

(9)
(10)
(11)

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

(12)

Madrid Python Meetup 2016/03/10 Página 14

VENTANAS

FLINK: CARACTERÍSTICAS DIFERENCIADORAS

(13)

(A,5) (A,6) (A,5) (A,1)

VENTANAS POR CLAVE

(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

1s 2s

(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)

(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

(15)

EL TIEMPO ES IMPORTANTE

¿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

(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

(17)

FUNCIONALIDADES

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

(18)

EXPER

IENCIA

CON

(19)

SEGÚN LA DOCUMENTACIÓN

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

(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.

(21)

POCA ACIVIDAD

El último commit de la parte de Python fue hace varios meses:

(22)

Madrid Python Meetup 2016/03/10 Página 24

(23)

ww

w

.gm

v.

GRACIAS

(24)

BACKU

P

SLIDES

(25)

TERASORT

(26)

Madrid Python Meetup 2016/03/10 Página 52

TERASORT

PERFORMANCE

(27)

STREAMING - YAHOO

(28)

Madrid Python Meetup 2016/03/10 Página 54

STREAMING - YAHOO

PERFORMANCE

(29)
(30)

Madrid Python Meetup 2016/03/10 Página 56

CONSTRUCCIÓN DE VENTANAS

VENTANAS

(31)

Referencias

Documento similar

En este TFG se presenta una introducción al lenguaje Cython y se estudian el algo- ritmo de Bellman-Ford y el de Ford-Fulkerson, en los que se obtienen, para cada uno de ellos,

Para incorporar funcionalidad Sense HAT a nuestros programas Python, agregamos las siguientes líneas para importar la biblioteca, a la biblioteca Sense HAT:.. from sense_hat

Conocer las herramientas de programación Fenics y Python para la programación de elementos finitos y resolución de problemas sencillos de optimización con restricciones dadas

Este proyecto consiste en crear un módulo en Python para la representación geográfica de datos de manera visual.. Además de ser código abierto, destaca la facilidad de su

159 Diseña un programa que lea una cadena y un número entero k y nos diga si alguna de sus palabras tiene una longitud de k caracteres.. 160 Diseña un programa que lea una cadena y

Functional Data Analysis, visualization, interactivity, Python, Matplotlib, scikit-fda (Python package for FDA), depth measures, open-source software... Table

Ya que Runator posee información sobre entrenamientos de corredores así como de sus marcas en carreras de maratón reales, ha sido posible disponer de estos datos para realizar

The programming language most widely used in data mining is Python, primarily because of its ver- satility and the number of libraries that are available for data processing,