Big Data y Supercómputo Dr. Jesús Antonio González (jagonzalez@inaoep.mx) Instituto Nacional de Astrofísica, Óptica y Electrónica (INAOE) Big Data 2 ¿Hasta qué cantidad de datos podemos procesar en nuestra computadora? ¿Qué tanto podemos incrementar el poder de nuestra computadora? Introducción ¿Con qué tipo de datos estamos trabajando? BD Relacional Datos estructurados Facebook Twitter Sensores RFID AMBOS 3 1 TB Cantidad de Datos 10 TB 100 TB Más… 4 Hadoop Open source project Apache Foundation Escrito en Java por Doug Cutting (Le dio el nombre por el elefante de juguete de su hijo) Utiliza tecnología de Google Hadoop MapReduce File System Para manejar grandes cantidades de datos con paralelismo Diferentes tipos de datos Estructurados No-Estructurados Semi-Estructurados Usando hardware no-costoso de manera conveniente 5 Hadoop Gran eficiencia Trabaja por lotes “batch” para manejar las grandes cantidades de datos Replica los datos en varias computadoras Confiable, si una se cae, los datos se toman de alguna réplica No está diseñado para Hadoop OLTP OLAP Decision Support Systems (DSS) Sí está diseñado para Big Data Complementa OLTP y OLAP No reemplaza una BD relacional 6 Explosión en cantidad de datos recolectados Big Data ¿Qué es Big Data? Describe colecciones de datos grandes (Large Datasets) Pueden ser no-estructurados Crecen tan grandes y rápido que se dificulta manejarlos en una BD normal o con herramientas estadísticas 7 Estadísticas interesantes – Ejemplos de Big Data ¿Qué es Big Data? 2 mil 800 millones de usuarios en internet (nivel mundial), más el día de hoy 4 mil 600 millones de teléfonos móviles en 2011 7TB de datos se procesan por Twitter cada día 10 TB de datos se procesan por Facebook cada día Aprox. 80% de estos datos son no-estructurados 8 Con estas Grandes Cantidades de Datos los negocios requieren ¿Qué es Big Data? Velocidad Confiabilidad Análisis más profundo de los datos Soluciones para Big Data Cada vez más relevantes i.e. Hadoop 9 Proyectos relacionados con Hadoop Hadoop Eclipse (IDE donada por IBM) Lucene (librería de motor de búsqueda de texto, en Java) H-BASE (La base de datos de hadoop) Hive (Herramientas de data warehousing para extraer, transformar, cargar datos y hacer queries a estos datos almacenados en archivos de Hadoop) Pig (Plataforma para analizar grandes conjuntos de datos, lenguaje de alto nivel para análisis de datos) jaql o jackal (Query language para JavaScript open notation) Zoo Keeper (configuración de servicios y registro de nombres centralizada para sistemas distribuidos grandes) Avro (Sistema de serialización de datos) UIMA (Arquitectura para desarrollo, descubrimiento, composición e implementación para el análisis de datos no-estructurados) 10 IBM Watson, supercomputadora de IBM que compitió en “Jeopardy” Ganó a 2 de los jugadores más populares Procesó aprox. 200 millones de texto usando hadoop Sistema distribuído Búsqueda avanzada Análisis Ejemplos de Hadoop 11 Industria de telecomunicaciones China Mobile Cluster con hadoop para Ejemplos de Hadoop Minería de Datos en registros de datos de llamadas (Call Data) 5 – 8 TB de información se producían al día Pudieron procesar 10 veces más datos que con el sistema anterior A 1/5 del costo anterior 12 Industria de Medios Ejemplos de Hadoop New York Times Querían poner en su sitio web todos los artículos de dominio público de 1851 a 1922 Convirtieron los artículos 11 millones de archivos de imágenes a 1.5 TB de documentos PDF Implementado por 1 empleado Corrió un trabajo x 24 horas en un cluster Hadoop en Amazon EC2 de 100-instancias Bajo costo 13 Industria de Tecnología IBM IBM ES2 Ejemplos de Hadoop Tecnología de búsqueda basada en Hadoop, Lucene y Jaql Retos empresariales como Vocabulario, abreviaciones, acrónimos Puede hacer tareas de minería de datos para Crear librerías de acrónimos Patrones de expresiones regulares Reglas para geo-clasificación 14 Ejemplos de Hadoop Industria de la Tecnología Compañías en Internet o Redes Sociales como Yahoo, Facebook, Amazon, eBay, Twitter, StumbleUpon, Rackspace, Ning, AOL y más… 15 Ejemplos de Hadoop Yahoo es uno de usuarios más productivos Aplicación corre en un cluster 10,000 máquinas con Linux Es quien más contribuye al proyecto Hadoop 16 Ejemplos de Hadoop http://hadoopilluminated.com/hadoop_illuminated/Hadoop_Use_ Cases.html#d235e1334 17 Hadoop no Resuelve todos los Problemas Hadoop no es bueno para: Procesar transacciones (acceso aleatorio) Cuando el trabajo no se puede paralelizar Para tiempos de respuesta bajos (low latency) Para procesar grandes cantidades de archivos pequeños Para cálculos intensivos con pocos datos 18 Soluciones para Big Data Soluciones para Big Data Son más que solo Hadoop Se añade funcionalidad de inteligencia de negocios (BI) y análisis de datos Para crear información valiosa Puede combinar datos estructurados (los ya existentes en las corporaciones) con datos no estructurados Pueden derivar información a partir de datos en movimiento Streams de InfoSphere de IBM Determinar sentimientos de clientes hacia un nuevo producto Basado en comentarios de Facebook o Twitter 19 La nube se ha hecho muy popular Big Data y la Nube Combina muy bien con soluciones de Big Data En la nube podemos configurar un cluster de hadoop en minutos, bajo demanda y se puede utilizar tanto como se necesite sin pagar más de lo que se usa 20 Términos HDFS Architectura de Hadoop MapReduce Tipos de nodos Topología Escritura de un archivo a HDFS 21 Nodo Es una computadora Rack Architectura de Hadoop Colección de nodos 30 a 40, almacenados cerca el uno del otro Todos conectados al mismo switch de la red Ancho de banda entre dos nodos en el mismo Rack es mayor al ancho de banda entre dos nodos en distintos Racks Cluster Colección de Racks 22 Hadoop 23 Hadoop Cluster Architectura de Hadoop 24 Dos componentes principales Architectura de Hadoop DFS (Distributed File System) Varias opciones El principal es HDFS Motor MapReduce Para hacer cálculos sobre los datos en el DFS 25 Se ejecuta sobre el sistema de archivos existente En cada nodo del cluster de Hadoop Diseñado para un patrón de acceso muy particular Hadoop Distributed File System (HDFS) Archivos muy grandes Flujo de datos Trabaja mejor con archivos grandes A mayor tamaño, menor tiempo de búsqueda por otro segmento de archivo Trabaja al límite del ancho de banda de acceso a disco Minimizar “seeks” usando archivos grandes Hadoop hace un “seek” para el principio de un bloque y continúa leyendo secuencialmente a partir de ahí Utiliza bloques “blocks” para almacenar un archivo o partes de un archivo 26 Hadoop Distributed File System (HDFS) 27 Hadoop Distributed File System (HDFS) Bloques Son grandes 64MB (default), 128MB (recomendado) Comparado con UNIX (4KB) Robusto 1 bloque HDFS es soportado por múltiples sistemas operativos “(OS) blocks” 28 Ventajas Hadoop Distributed File System (HDFS) Tamaño fijo (fácil calcular como se almacenan en disco) Un archivo podría ser más grande que cualquier disco en la red Podría almacenarse por bloques en más de un nodo Un bloque podría ser de menor tamaño para ahorrar espacio Se facilita implementar la replicación para proveer Tolerancia a fallas Disponibilidad 29 Un bloque se puede replicar en múltiples nodos Aun con fallas de nodos, no se pierden datos La replicación se puede configurar con más de dos nodos Hadoop Replication 30 HDFS es tecnología de Google Motor MapReduce MapReduce también inspirado en un artículo publicado por Google Consiste en dos transformaciones a los datos que se pueden aplicar muchas veces Las funciones Map y Reduce Un trabajo MapReduce se divide en tareas “Map” que se ejecutan en paralelo (independientes una de otra) y tareas “Reduce” 31 Tipos de Nodos 32 Nodos HDFS NameNode DataNode Nodos MapReduce Tipos de nodos JobTracker TaskTracker Otros nodos secundarios Secondary NameNode CheckPointNode BackUpNode 33 Tipos de nodos 34 Tipos de Nodos Name Node 35 Solo hay un NameNode por un cluster Hadoop Maneja el “namespace” del sistema de archivos y los metadatos Punto de fallas Tipos de nodos NameNode Se mitiga al guardar el estado en múltiples sistemas de archivo El local y otro en un punto montado con NFS Se recomienda utilizar un nodo especializado para esta función El nodo con mejor configuración debería ser el “NameNode” Memoria 36 Tipos de Nodos Data Node 37 Muchos por cada cluster Hadoop Tipos de nodos DataNode Maneja los bloques con datos y funciona como servicio para clientes Reporta periódicamente al “NameNode” la lista de bloques que almacena Se puede utilizar HW no especializado (no caro) La replicación de datos se hace a nivel de SW 38 Tipos de Nodos JobTracker 39 Uno por cluster Hadoop Tipos de Nodos JobTracker Recibe peticiones de trabajos enviadas por los clientes Agenda y monitorea trabajos MapReduce con los “TaskTrackers” Monitorea fallas en las tareas que requieran ser re-agendadas en otro “TaskTracker” 40 Tipos de Nodos TaskTracker 41 Muchos por cada cluster Hadoop Tipos de Nodos TaskTracker Para lograr el paralelismo en tareas MapReduce Ejecuta operaciones MapReduce Lanza máquinas virtuales de Java para ejecutar una tarea “Map” o “Reduce” 42 Hadoop conoce la topología de la red Permite optimizar la asignación de trabajos a aplicar a los datos Asignar el trabajo lo más cerca de los datos para maximizar el ancho de banda para leer los datos Topology Awareness 43 1ª opción Asignar el TaskTracker a recibir la tarea Map que lee los datos en el mismo nodo Topology Awareness 2ª opción Asignar a un nodo en el mismo Rack que los datos Peor opción Asignar a un nodo en un rack distinto a donde pertenecen los datos Se recomienda configurar “Rack-Awareness” Tratar de ejecutar la tarea en el nodo “TaskTracker” con mayor ancho de banda de acceso a los datos 44 1. Crea petición a NameNode Verifica si existe el archivo Permite crear el archivo 2. NameNode determina el nodo en que almacenará el primer bloque B1. Escritura de un Archivo a HDFS Si el cliente corre un DataNode, lo ubicará ahí, si no elige uno aleatoriamente 3. Por default, los datos se replican en 2 nodos en el cluster Envío de “acknowlegements” de las réplicas y del DataNode al cliente Repite por cada bloque Por cada bloque, replica en al menos 2 racks Cliente avisa a DataNode que terminó al recibir acknowledgements 45 Descomponer operaciones en map y reduce MapReduce Provienen de lenguajes de programación funcional Permiten pasar funciones como argumentos a otras funciones Ejemplo: for loop para duplicar cada elemento de un arreglo 46 MapReduce 47 MapReduce 48 MapReduce Ejemplo 49 MapReduce Outer Join 50 Supercómputo 51 Supercómputo HPC 52 Poder de Cómputo 53 ¡Cómo Medimos el Poder de Cómputo? 54 Arquitectura en Supercómputo 55 Software para Multicore 56 Software para HPC 57 Big Data y Supercómputo ¿Compatibles? 58 Big Data y Supercómputo ¿Compatibles? 59 Hadoop para Datos Científicos 60 Ciencia de Datos 61 Herramientas para Hadoop y Ciencia de Datos 62 Ecosistema Hadoop 63 Big Data y Super-cómputo tienen mucho en común En mi opinión se complementan Big Data ya se aplica a algunas aplicaciones científicas Conclusiones Bioinformática y biología computacional Procesamiento de imágenes astronómicas Procesamiento de lenguaje natural Procesamiento de datos geoespaciales Big Data y Cómputo Científico ¿Falta Software? ¿Falta enfocar los problemas al esquema de análisis de Big Data? Tenemos mucho por hacer en investigación y desarrollo 64