Upload
grupo-g-tec
View
42
Download
0
Tags:
Embed Size (px)
Citation preview
1
Claves para el desarrollo de Proyectos Big Data
Victoria Ló[email protected] Complutense de Madrid
4b
2
Introducción. Casos de Uso Big Data Collection Proyectos Big Data Almacenamiento y Procesamiento de Datos Sistemas Big Data y Data Analytics Complejidad y TPA
Claves para el desarrollo de Proyectos Big Data
4b
3
Complejidad Computacional Rendimiento en computación Paralela Sistema de distribución RAID Técnicas de Programación Avanzada
Divide y Vencerás Voraz Programación Dinámica Backtracking / Branch & Bound
Complejidad Computacional y TPAs
4b
4
Complejidad Computacional
Problemas P Problemas NP Problemas NP-Completos
5
Complejidad Computacional
Problemas P
Problemas de decisión que pueden ser resueltos en una máquina determinista secuencial en un período de tiempo polinómico en proporción a los datos de entrada (tamaño del problema).
Ejemplos:
Ordenación – Mergsort, quicksort,…
Caminos mínimos – Dijkstra
Multiplicación de matrices, etc.
6
Complejidad Computacional
Problemas NP
Una generalización de P es NP, que es la clase de problemas decidibles en tiempo polinómico sobre una máquina de Turing no determinista.
P es un subconjunto de NP.
Ejempos:
- Ciclos hamiltonianos (Problema del viajante)
Alan Turing, en su famoso artículo "On computable numbers, with an application to the entscheidungs problem" (1936), demostró que el problema de la parada (halting problem) de la máquina de Turing es indecidible, en el sentido de que ninguna máquina de Turing lo puede resolver.
7
Complejidad Computacional
Problema de Parada (Halting problema): encontrar un algoritmo general que decida si una fórmula escrita en cálculo de primer orden es un teorema. En 1936 (de manera independiente) Alonzo Church y Alan Turing demostraron que es imposible escribir tal algoritmo. Como consecuencia, es también imposible decidir con un algoritmo si ciertas frases concretas de la aritmética son ciertas o falsas.
https://www.youtube.com/watch?v=M42sJinf3X8
MIT Lecture: https://www.youtube.com/watch?v=msp2y_Y5MLE
https://www.youtube.com/watch?v=9USdYUgwRpU
8
Complejidad Computacional
Dado un conjunto X y un elemento a, decidir si a pertenece a X es un problema que puede no tener solución en tiempo finito.--Conjuntos decidibles: se sabe siempre la respuesta en tiempo finitoEjemplo: El conjunto A de personas diestras es decidible. Escogida una persona cualquiera, con un simple test podemos saber si es o no diestra en tiempo finito (si pertenece o no al conjnto A)--Conjuntos indecidibles: no se sabe si puede conocerse la respuesta en tiempo finito Ejemplo: El conjunto B de bebés prematuros que desarrollarán la DBP (displesia broncopulmonar)Escogido un bebé prematuro, se le hacen las pruebas y se presentan dos situaciones:1. Da positivo: El bebé pertenece al conjunto B2. Da negativo: No se sabe si el bebé pertenece al conjunto B (y no depende
de la prueba que se realice!!)
9
Rendimiento en ProgramaciónParalela
La ley de AmdahlLa ley de GustafsonEjemplos de aplicación
10
Mejora de un sistema
• La mejora de un sistema no es ilimitada. • Las tecnologías Big Data no son óptimas si no se utilizan
adecuadamente– Hay que saber hacia dónde dirigir los esfuerzos de optimización
• La mejora de cualquier sistema debido a un componente más rápido depende del tiempo que éste se utilice
• Discusión preliminar– Un sistema tarda un tiempo T en ejecutar un programa– Mejoramos el sistema acelerando k veces uno de sus componentes– Este componente se utiliza durante una fracción f del tiempo T ¿Cuál es la
aceleración A del sistema global?
11
Tiempo original vs. tiempo mejorado
Recurso no utilizado Recurso utilizado
Fracción 1 f Fracción f
Recurso no utilizado Recurso utilizado
Toriginal
Tmejorado
Recurso mejorado k veces
12
Ley de Amdahl (1967)
• ¿Cuál es la aceleración A (speedup) del sistema completo después de acelerar k veces un componente?
• Casos particulares de la ley– Si f = 0 A = 1: no hay ninguna mejora en el sistema– Si f = 1 A = k : el sistema mejora igual que el componente
mejorado
original
T
T A
k
ff1TT originalmejorado
kf
fA
1
1
13
Ejemplo de cálculo
• La utilización de un procesador es del 60%• ¿En cuánto aumentará el rendimiento del sistema si se duplica
la velocidad del procesador (k=2)?
• Aceleración máxima que se puede conseguir
43.1
26.0
)6.01(
1
ALa aceleración es 1.43 El rendimiento aumenta un 43%
5.2.60-1
1
-1
1lím
fA
k
14
Contexto de la ley de Amdahl
• Artículo firmado por Gene Amdahl– “Validity of the Single Processor Approach to Achieving Large-Scale Computing
Capabilities”, AFIPS Conference Proceedings, (30), pp. 483-485, 1967. – Se utiliza para poner de manifiesto las limitaciones de los multiprocesadores en el
cómputo paralelo
f = 0.5
f = 0.95
15
Análisis: relación entre A, f y k
1
2
3
4
5
6
7
8
9
10
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Acc
eler
ació
glo
bal (
A)
Utilització millorada (f)
Relació entre A i f,a
k = Infinitok = 50k = 10k = 5k = 4k = 3k = 2k = 1.5
k =infinito A=2
k=infinito A=5
Utilización mejorada (f)
Ace
lera
ción
glo
bal (
A)
Relación entre A, f y k
16
Generalización de la ley de Amdahl
• Caso con una mejora solamente
• Caso general con n mejoras
kf
fA
1
1
n
i i
in
ii k
ff
A
11
1
1
17
Rendimiento de multiprocesadores
• Sistema con p procesadores• Aplicación a paralelizar
– Fracción secuencial = 0.10– Fracción paralelizable = 0.90
• ¿Cuál es la aceleración obtenida con 15 procesadores?
• ¿Cuál es la aceleración máxima obtenible?
25.6
1590.0
10.0
11
paralelasecuencial
p
ff
A 1010.0
11lím
secuencial
f
Ap
18
0,00
2,00
4,00
6,00
8,00
10,00
12,00
14,00
16,00
0 10 20 30 40 50
Procesadores
Acele
ració
n
Evolución de la aceleración
5% secuencial8.82
6.25
10% secuencial
19
Planteamiento de Gustafson
• Amdahl enfatiza el aspecto más negativo del procesamiento paralelo
• Las máquinas paralelas se usan para resolver grandes problemas (meteorología, biología molecular, big data)
• Un computador secuencial nunca podría ejecutar un gran programa paralelo
pT
TA 1
paralela Parte1
secuencial Parte
20
La aceleración proporcional
• La cantidad de trabajo que se puede hacer en paralelo varía linealmente con el número de procesadores– Con más procesadores se pueden acometer problemas de mayor
coste computacional
)1()1(
1
111 ppT
pTT
T
TA
pp
T1 = Tp
T’1
T1 (1−) T1
T1 (1−) p T1
Máquina paralela
Máquina secuencial
21
Algunas reflexiones finales
• Una mejora es más efectiva cuanto más grande es la fracción de tiempo en que ésta se aplica
• Para mejorar un sistema complejo hay que optimizar los elementos que se utilicen durante la mayor parte del tiempo (caso más común)
• Campos de aplicación de las optimizaciones– Dentro del procesador: la ruta de datos (data path)– En el juego de instrucciones: la ejecución de las instrucciones más frecuentes– En el diseño de la jerarquía de memoria, la programación y la compilación:
hay que explotar la localidad de las referencias• El 90% del tiempo se está ejecutando el 10% del código
Sistemas de Distribución: RAID
¿Qué es RAID?
Conjunto Redundante de Discos Independientes (Redundant Array of Independent Disks)
Sistema de almacenamiento de datos que combina múltiples unidades de almacenamiento (HDD o SSD) para formar una única unidad lógica.
Proporciona: Mayor integridad, tolerancia a fallos, rendimiento y capacidad.
2
Niveles de RAID
3
Niveles de RAID estándar
Niveles de RAID anidados
Niveles de RAID propietarios
Niveles de RAID estándar
4
Conjunto dividido: Distribuye la información equitativamente en todos los
discos. Ejemplo: RAID 0
Conjunto en espejo: Crea una copia exacta de un conjunto de datos en uno
o más discos Ejemplo: RAID 1
Conjunto dividido con paridad distribuida: Crea una división de datos a nivel de bloques que
distribuye la información de paridad entre los discos Ejemplo: RAID 5
RAID 0 – Ofrece mayor rendimiento pero no tolerancia a los fallos –Sistema en Serie
RAID 1 – Mejora el rendimiento y tiene tolerancia a los fallos – Sistema en paralelo
RAID 5 – Mejora los sistemas multiusuario
,
Ejemplos
Niveles de RAID anidados
5
Los RAID anidados se indican normalmente uniendo en un solo número los correspondientes números de los niveles RAID usados, añadiendo a veces un «+» entre ellos.
Por ejemplo, el RAID 01 (o RAID 0+1)
Niveles de RAID propietarios Son desarrolladas por compañías privadas.
Suelen implementarse como una combinación o evolución de RAID existentes añadiendo algunas mejoras.
Estos mejoras puede ser: Tolerancia a fallos simultánea en múltiples discos. Añadir componentes hardware. Añadir cachés para mejorar el rendimiento
Ejemplo de RAID propietario: RAID 1.5
6
Cálculo de paridad
7
La paridad es un mecanismo utilizado para detectar errores.
Se utiliza para la protección de datos y para la recuperación de datos perdidos.
Se basa en la propiedad algebraica de la conmutatividad de la suma: si tenemos el rango 0-100 pero detectamos que falta un número, podemos saber cuál es de forma sencilla usando la suma y la conmutatividad.
El operador más común en RAID es la XOR.
Cálculo de paridad: ejemplo
8
Supongamos un sistema RAID de 6 discos donde la información se codifica en binario:
Disco 1(datos)
Disco 2(datos)
Disco 3(datos)
Disco 4 (datos)
Disco 5(Repuesto)
Disco 6(paridad)
Cálculo de paridad: ejemplo
9
Escribimos 00101010 en el disco 1
Disco 1(datos)
Disco 2(datos)
Disco 3(datos)
Disco 4 (datos)
Disco 5(Repuesto)
Disco 6(paridad)
00101010
Cálculo de paridad: ejemplo
10
Escribimos 10001110 en el disco 2
Disco 1(datos)
Disco 2(datos)
Disco 3(datos)
Disco 4 (datos)
Disco 5(Repuesto)
Disco 6(paridad)
00101010 10001110
Cálculo de paridad: ejemplo
11
Escribimos 11110111 en el disco 3
Disco 1(datos)
Disco 2(datos)
Disco 3(datos)
Disco 4 (datos)
Disco 5(Repuesto)
Disco 6(paridad)
00101010 10001110 11110111
Cálculo de paridad: ejemplo
12
Escribimos 10110101 en el disco 4
Disco 1(datos)
Disco 2(datos)
Disco 3(datos)
Disco 4 (datos)
Disco 5(Repuesto)
Disco 6(paridad)
00101010 10001110 11110111 10110101
Cálculo de paridad: ejemplo
13
Calculamos la paridad bit a bit con la XOR: 00101010 XOR 10001110 XOR 11110111 XOR 10110101 = 11100110
Disco 1(datos)
Disco 2(datos)
Disco 3(datos)
Disco 4 (datos)
Disco 5(Repuesto)
Disco 6(paridad)
00101010 10001110 11110111 10110101
36
Cálculo de paridad: ejemplo
Escribimos el resultado en el disco de paridad
Disco 1(datos)
Disco 2(datos)
Disco 3(datos)
Disco 4 (datos)
Disco 5(Repuesto)
Disco 6(paridad)
00101010 10001110 11110111 10110101 11100110
37
Cálculo de paridad: ejemplo
El disco 2 se rompe
Disco 1(datos)
Disco 2(datos)
Disco 3(datos)
Disco 4 (datos)
Disco 5(Repuesto)
Disco 6(paridad)
00101010 10001110 11110111 10110101 11100110
38
Cálculo de paridad: ejemplo
Calculamos la XOR bit a bit con los discos restantes y el de paridad:
00101010 XOR 11110111 XOR 10110101 XOR 11100110 = 10001110
Disco 1(datos)
Disco 2(datos)
Disco 3(datos)
Disco 4 (datos)
Disco 5(Repuesto)
Disco 6(paridad)
00101010 10001110 11110111 10110101 11100110
39
Cálculo de paridad: ejemplo
Escribimos el resultado en el disco de repuesto:
Disco 1(datos)
Disco 2(datos)
Disco 3(datos)
Disco 4 (datos)
Disco 5(Repuesto)
Disco 6(paridad)
00101010 10001110 11110111 10110101 1110011010001110
Ventajas
20
Mayor fiabilidad que los discos individuales por ser una arquitectura tolerante a fallos con elementos redundantes.
Mayor rendimiento y tasa de transferencia de datos al realizar lecturas y escrituras simultáneas sobre diferentes discos.
Mayor capacidad de almacenamiento en RAID 0.
Mayor integridad de los datos gracias al mecanismo de paridad.
Desventajas:
21
La migración de un sistema RAID a otra máquina o controladora resulta complejo o incluso imposible.
En sistemas RAID de espejo (RAID 1), la capacidad total se reduce a la mitad.
Elevado coste en algunas configuraciones.
El disco de paridad puede actuar de cuello de botella porque cada cambio en el grupo RAID requiere un cambio en este disco.
42
Técnicas de Programación Avanzada
-Divide y Vencerás-Voraz-Programación Dinámica-Backtracking
43
1. Divide y Vence
44
Aplicaciones
Búsqueda de un elemento en un a base de datos
Ordenación de vectores/matrices Cálculo de la Moda Multiplicación de enteros grandes Multiplicación de matrices grandes Subvectores de suma máxima
45
Complejidad Divide y Vence
46
Búsqueda Binaria en un vector ordenado
47
Merge Sort-Ordenación por Mezclas
Desarrollado en 1945 por John von Neumann
Pasos:
Caso Base: Si la longitud de la lista es 0 ó 1, entonces ya está ordenada. Caso General:
1. Dividir la lista desordenada en dos sublistas de aproximadamente la mitad del tamaño.2. Llamar recursivamente con cada sublista aplicando el mismo procedimiento3. Mezclar las dos sublistas en una sola lista ordenada.
48
Quick sort ---- Ordenación Rápida
Creado por Tony Hoare en 1961
Caso Base: Si la longitud de la lista es 0 ó 1, entonces ya está ordenada. Caso General:
1. Seleccionar un pivote (el último elemento) y colocarlo en su sitio definitivo de forma que los menores queden antes y los mayores después aunque desordenados.2. Llamar recursivamente con input la sublista anterior y la posterior aplicando el mismo procedimiento3. No hace falta mezclar porque las dos sublistas ya estarán ordenadas y serán contiguas.
49
Mersort vs. Quicksort
https://www.youtube.com/watch?v=FGgVgSitSF0
Mersort vs quicksort
https://www.youtube.com/watch?v=es2T6KY45cA
50
Algoritmos VoracesGreedy
• Técnica para resolver algunos problemas de optimización. • Partes del problema:
– Conjunto de Candidatos– Etapas
• En cada etapa se escoge el candidato más adecuado. • El proceso debe conducir a la solución óptima. • Hay que buscar un criterio de selección de candidatos que
conduzca a la solución óptima. • Requiere una demostración matemática del paso anterior. • No siempre existe dicho criterio, en estos casos la
Programación Dinámica puede ser una buena alternativa.
51
Esquema Voraz
52
Aplicaciones de Voraz• Arboles recubridores mínimos ARM (minimum spanning tree) • Algoritmo de Kruskal: partiendo del grafo inconexo (sin
aristas) añadir la arista de menor peso que una dos componentes conexas diferentes hasta tener una única componente conexa. https://www.youtube.com/watch?v=SilS8f8icWY
• Algoritmo de Prim: Escoger la arista de menor peso que una un vértice ya en el árbol con otro aún fuera del árbol hasta tener todos los vértices del árbol. https://www.youtube.com/watch?v=-2NlTulDUq4
• Transmisión rápida de mensajes en la red.• Asegurar la cobertura de un servicio con
coste mínimo.• En la secuenciación del genoma se
utilizaron caminos hamiltonianos pero no exite un algoritmo voraz.
53
Aplicaciones de Voraz
Árbol de caminos mínimos Algoritmo de Dijkstra: Criterio escoger el vértice más
cercano a alguno de todos los accesibles desde el último vértice accedido, pudiéndolo acceder mediante un acceso directo o indirecto según los vértices ya marcados.
- Produce el camino minimo desde un vértice s a todos los demás vértices del grafo, es decir, resuelve M(s, x) =camino más corto entre s y x. De forma que M(s,t) es la solución buscada.
Tiene muchísimas aplicaciones en la industria. Vuelos desde una base a varios destinos, por ejemplo.
54
Programación Dinámca
Técnica que (sólo) resuelve problemas que cumplen el Principio de Optimalidad de Bellman
Hay que generalizar el problema para poder comprobar (demostrar) que se cumple el P.O.
Pasos de resolución:
Definir unas ecuaciones recursivas (simples o múltiples) que resuelvan el problema. Definir los casos límite y casos base primero.
Ejecutar la programación recursiva calculando los datos básicos primero y almacenándolos en tablas para
-Evitar cálculos repetidos
-Marcar un camino para después rastrear la solución que produce el valor óptimo.
55
– Supongamos que un problema se resuelve tras tomar un secuencia d1, d2, …, dn de decisiones.
– Si hay d opciones posibles para cada una de las decisiones, una técnica de fuerza bruta exploraría un total de dn secuencias posibles de decisiones (explosión combinatoria).
– La técnica de programación dinámica evita explorar todas las secuencias posibles por medio de la resolución de subproblemas de tamaño creciente y almacenamiento en una tabla de las soluciones óptimas de esos subproblemas para facilitar la solución de los problemas más grandes.
Programación dinámica: Introducción
56
• Aplicabilidad– Se emplea típicamente para resolver problemas de
optimización (maximizar, minimizar).– Permite resolver problemas mediante una
secuencia de decisiones (como el esquema voraz)
– A diferencia del esquema voraz, se producen varias secuencias de decisiones y solamente al final se sabe cuál
es la mejor de ellas.– Está basado en el principio de optimalidad de Bellman:
Programación dinámica:
R. Bellman: Dynamic Programming,Princeton University Press, 1957
“Cualquier subsecuencia de decisiones de una secuencia óptima de decisiones que resuelve un problema también debe ser óptima respecto al subproblema que resuelve.”
57
Problema del Ascensor
Función objetivo 1: Maximizar el número de personas que transportará el ascensor
Función objetivo 2: Maximizar el peso que transportará el ascensor
Datos: Capacidad del ascensor C=300kg Pesos de las personas en espera: 30, 40, 50, 70, 90, 150
Criterio voraz 1: Escoger en cada etapa la persona de menor peso
Criterio voraz 2: Escoger en cada etapa la persona de mayor peso
58
Algoritmos Voraces vs. P. Dinámica
59
Algoritmos Voraces vs. P. Dinámica
60
Problema de la Mochila
Se tienen n objetos fraccionables y una mochila.El objeto i tiene peso pi y una fracción xi (0≤xi≤1) del objeto i produce un beneficio bixi.El objetivo es llenar la mochila, de capacidad C, de manera que se maximice el beneficio.
Una variante: la “mochila 0-1”xi sólo toma valores 0 ó 1, indicando que el objeto se deja fuera o se mete en la mochila.Los pesos, pi, y la capacidad son números naturales. Los beneficios, bi, son reales no negativos.
maximizar bixi1i n
sujeto a pixi1i n C
con 0xi 1, bi 0, pi 0, 1i n
61
El problema de la mochila 0-1
62
El problema de la mochila 0-1
63
Aplicaciones P. Dinámica en Big Data
En la secuenciación del genoma se utilizan varios algoritmos basados en la PD.
Cuando se rompe la molécula de ADN en 28 millones de trozos, se realizan alineamientos múltiples para encontrar la secuencia más probable. Estos alineamientos son los algoritmos de Needleman – Wunsh y de Smith - Waterman
Los laboratorios utilizan los algoritmos Fasta y Blast como heuristicas de los anteriores, en estos se asume la pérdida de datos a favor de la velocidad de procesamiento.
64
-Backtracking (Búsqueda con Retroceso)-Branch & Bound (Ramificación y Poda)
65
Backtraking
66
Backtraking
67
FUTURO
REDISEÑO DE ALGORITMOS. ALGORITMOS APROXIMADOS ORIENTADOS AL HARDWARE Y AL PROCESAMIENTO EN LA NUBE
RECONFIGURACIÓN DE SISTEMAS DE ALMACENAMIENTO A VECES CON PÉRDIDA DE DATOS CONTROLADA
TRABAJO ONLINE MAS HACIA STREAMING Y MENOS HACIA STANDALONE Y BATCH PROCESSING
68
Claves para el desarrollo de Proyectos Big Data
Victoria Ló[email protected] Complutense de Madrid
Fin