UNIVERSIDAD DE CHILE FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS

Tamaño: px
Comenzar la demostración a partir de la página:

Download "UNIVERSIDAD DE CHILE FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS"

Transcripción

1 UNIVERSIDAD DE CHILE FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS DEPARTAMENTO DE CIENCIAS DE LA COMPUTACIÓN PARALELIZACIÓN DE UN ALGORITMO PARA LA DETECCIÓN DE CÚMULOS DE GALAXIAS MEMORIA PARA OPTAR AL TÍTULO DE INGENIERO CIVIL EN COMPUTACIÓN MARCEL ANDRE AUGSBURGER BECERRA PROFESOR GUIA: NANCY HITSCHFELD KAHLER MIEMBROS DE LA COMISION: LUIS CAMPUSANO BROWN JORGE PÉREZ ROJAS SANTIAGO DE CHILE ENERO 2012

2 Tabla de contenido Resumen Introducción La nueva astronomía La computación paralela Motivación Importancia del análisis de cúmulos de galaxias Importancia del análisis paralelo Otras aplicaciones del software Objetivos Contenido de la memoria Antecedentes Tipos de paralelismo Herramientas Algoritmo secuencial de detección de cúmulos de galaxias Análisis...17 Arquitectura de Hadoop Distribución de datos Procesamiento de datos Escalabilidad HDFS MapReduce Arquitectura de Vocludet Versión disponible de Vocludet Alternativas de implementación

3 MapReduce de Hadoop Pig Streaming Alternativa escogida Diseño e Implementación Diseño de la solución División de los datos Procesamiento de los datos Re ensamblaje de los resultados Diseño final Código Implementado Evaluación Datos de prueba Pruebas Particiones Ensamblaje Verificación de datos y procedimientos Desempeño Uso de recursos Desempeño comparativo Conclusiones Anexos...66 Tabla 3: Distribución de cúmulos por tamaño...66 Mapper Function 2 celdas 10% de overlap...67 Re Assembly Function Bibliografía

4 Resumen Dados los avances en la tecnología, la astronomía es capaz de recolectar del orden de terabytes de datos por noche. El análisis manual de ésta es prácticamente imposible, por lo que es constante la necesidad de nuevos y mejores algoritmos para realizar análisis automático. Por otro lado, la computación paralela provee herramientas para realizar análisis de datos masivos, las que incrementan la capacidad total de procesamiento y disminuyen el tiempo requerido. Existe un software para la búsqueda de cúmulos de galaxias, el cual funciona de forma secuencial. Hacer que este software funcione en forma paralela sería de gran utilidad, dada la cantidad de datos que existen y existirán para analizar. El objetivo de esta memoria es diseñar e implementar una solución computacional que permita efectuar la detección de cúmulos de galaxias en forma paralela. La paralelización del algoritmo se hizo sobre el framework Hadoop, utilizando la herramienta Streaming con el lenguaje Python para el desarrollo del software. Se construyó una aplicación que divide los datos de entrada de forma inteligente, ejecuta el algoritmo de detección de cúmulos de galaxias en varias máquinas de forma paralela, y re ensambla los resultados parciales obtenidos. Se estudiaron estrategias para el particionamiento de los datos, utilizando celdas con distintas geometrías. También se estudiaron e implementaron estrategias para el re ensamblado de los resultados. En base a conocimientos astronómicos y experimentación se determinó la utilidad, dado el contexto, de cada estrategia, y los valores límites para sus parámetros. Los resultados son los siguientes: (1) un software paralelo para la detección de cúmulos de galaxias; (2) al correr el programa paralelo con dos particiones, el tiempo de ejecución se reduce a la mitad; (3) el software secuencial de detección de cúmulos se observa altamente dependiente de las particiones utilizadas, encontrándose para una partición de 2 celdas sólo un 11% de los cúmulos que se detectaban en la versión secuencial. Como trabajo futuro se propone: (1) modificar el software secuencial de búsqueda de cúmulos de galaxias para que detecte cúmulos sin miembros repetidos; (2) ejecutar este software en un clúster de computadores o con cloud computing, para medir las mejoras en tiempo; (3) la ejecución de este software con sets de datos más grandes, para medir la escalabilidad de éste; (4) crear una partición adhoc al set de datos. 4

5 1. Introducción Desde la antigüedad, diferentes culturas y personas han creado catálogos de estrellas. Al principio se hacían observaciones a ojo desnudo, hasta que en 1610 Galileo Galilei apuntó su telescopio al cielo. Al irse mejorando las capacidades de los telescopios, la cantidad de información astronómica y por ende los catálogos estelares fueron creciendo en gran escala. Hoy en día las herramientas de observación permiten escanear el cielo y guardar los datos de manera automática, generando terabytes de información sólo de pequeñas áreas del cielo. Al haber tanta información, el análisis manual de ésta es prácticamente imposible, por lo que es constante la necesidad de nuevos y mejores algoritmos computacionales para realizar análisis automático. A pesar de ser mucho más eficiente, la gran cantidad de datos hace que el análisis computacional requiera de mucho tiempo de procesamiento. La computación paralela puede disminuir los costos en tiempo, ya que permite aumentar los recursos asignados a cada tarea. La computación paralela divide un problema en varios sub problemas, los que son resueltos de manera concurrente. De tal manera se puede resolver cada sub problema con distintos recursos, pudiendo distribuir la carga en equipos que pueden estar separados físicamente. Sin embargo, los programas paralelos agregan dificultad en los procesos de división del problema, en la concurrencia, y en el re ensamblado de la solución completa a partir de las soluciones parciales. Existe un software desarrollado por Daniel Pizarro et al, el cual aplica un algoritmo basado en el Voronoi Tessellation Technique (1) para la detección de cúmulos de galaxias. Este software lleva por nombre Vocludet. Uno de los componentes del Vocludet es el Voronoi Tessellation Maximum Likelihood Estimator, en adelante VTMLE, el cual lleva a cabo el proceso de búsqueda de cúmulos (2). Este software funciona de manera secuencial La nueva astronomía Gracias a los avances en la tecnología de los telescopios, algoritmos de detección, y hardware computacional, la recolección de datos astronómicos es actualmente del orden de terabytes por noche (4). Este incremento en la obtención de datos ha ocurrido en muchas áreas de la ciencia, cambiando la forma en que se hace la investigación y transformándola en análisis de datos sobre bases de datos con mucha información. En el área de la astronomía se habla del Observatorio Virtual, donde se puede acceder a la información de distintos centros de datos de manera relativamente fácil y transparente. Se 5

6 están aportando datos y relacionándolos entre sí a tasas cada vez mayores, lo cual ha tornado la obtención de datos por este medio en algo tan importante como la obtención de datos a través de telescopios. En los últimos años se han puesto a disposición resultados de numerosos estudios con distintos tipos de información astronómica. En particular existen datos e interés en la estructura a gran escala del universo, donde han jugado un rol importante las observaciones de cúmulos de galaxias, al servir para contrastarlas con las predicciones de diferentes modelos teóricos. Los cúmulos de galaxias, mencionados previamente, son sistemas que contienen desde 50 a 1000 galaxias unidas por atracción gravitacional mutua; las galaxias son sistemas de estrellas, las cuales poseen típicamente cientos de miles de millones de estrellas. Estos cúmulos han sido detectados históricamente en forma visual, y recientemente se han aplicado algoritmos para la detección automática de éstos. El sondeo 2dF Galaxy Redshift Survey (2dFGRS), llevado a cabo por el Observatorio Anglo-Australiano entre 1997 y 2002, generó variados tipos de información respecto a galaxias, incluyendo su distribución al determinar su posición en tres dimensiones (5). La estimación de distancias es posible gracias a la información del corrimiento al rojo, que es el aumento de la longitud de onda equivalente al Efecto Doppler en las ondas físicas La computación paralela La computación paralela es la utilización simultánea de múltiples recursos de computación para resolver problemas computacionales. Tradicionalmente, el software ha sido escrito para ser ejecutado en forma secuencial. Esto significa que para resolver un problema, el algoritmo que se implementa debe ser escrito como una secuencia de instrucciones. Como restricción se tiene que estas instrucciones deben ser ejecutadas una a la vez, y solamente en el orden especificado por el algoritmo. Cada una de estas instrucciones es ejecutada por una CPU (Central Processing Unit). El tiempo que demora la resolución del problema depende de la eficiencia del algoritmo y de la rapidez con la que la CPU realiza los cálculos, haciendo que este último factor haya sido y siga siendo sujeto de estudio. 6

7 Por décadas, la velocidad de procesamiento de los computadores ha ido incrementando según la Ley de Moore, esto es, duplicándose cada aproximadamente dos años (6). Este incremento se ha debido en gran medida al aumento de la frecuencia de reloj de los procesadores, sin embargo se está llegando a un límite conocido como power wall, debido al consumo exponencial de energía con el aumento en la frecuencia de operaciones, y el consiguiente aumento de temperatura. Existen también cuellos de botella como la rapidez de acceso a la memoria, por lo que el desarrollo de procesadores más rápidos no necesariamente va a significar un incremento en la eficiencia final de los computadores. En la búsqueda de cómo continuar incrementando la capacidad de procesamiento, y tomando en cuenta otros factores limitantes, se ha considerado el paralelismo como buena solución. La computación paralela se ha usado históricamente, mostrando buenos resultados en distintas áreas, como en computación de alto rendimiento, servidores, aceleración gráfica, y muchos sistemas embebidos (7). Así podemos encontrar actualmente diseños de procesadores con múltiples núcleos, los cuales permiten realizar varios cálculos por ciclo, para computadores multipropósito Motivación Existe un software para la búsqueda de cúmulos de galaxias, el cual funciona de forma secuencial. Hacer que este software funcione en forma paralela es de gran utilidad, dada la cantidad de datos que existen y existirán a futuro para analizar Importancia del análisis de cúmulos de galaxias Los cúmulos de galaxias son de gran interés para la astronomía. En las últimas décadas han tenido un importante rol en el estudio cosmológico: sirven para reconocer las estructuras en gran escala del universo, su densidad numérica se puede contrastar con predicciones de distintos modelos, y además sirven para monitorear la formación y evolución de las galaxias (9) Importancia del análisis paralelo Como se mencionó, hoy se cuenta con un observatorio virtual con grandes cantidades de datos. Futuros sondeos prometen aumentar el volumen de datos en órdenes de magnitud, produciendo una llamada avalancha de datos astronómicos. 7

8 La ciencia en general ha logrado producir más datos de los que se pueden analizar, y dada esta problemática, es de gran importancia primero lograr el análisis automático de los datos, e inmediatamente lograr paralelizarlo para aminorar los tiempos de procesamiento. Lo relevante de esta tarea para la astronomía, la aplicabilidad en otras ramas de la ciencia, y la conocida dificultad de paralelizar procesos, hacen de éste un tema interesante como memoria Otras aplicaciones del software El análisis de cúmulos es un problema recurrente en varias áreas, entre éstas el aprendizaje automático, reconocimiento de patrones, análisis de imágenes, recuperación de la información y bioinformática. Dado que el software desarrollado se creó de manera flexible, éste puede ser usado no sólo en el análisis de datos astronómicos, sino que también en cualquiera de las áreas recién mencionadas. Si bien la aplicación secuencial ya lo permitía, el desarrollo de este análisis en paralelo abre las puertas al procesamiento de órdenes de magnitud mayor de datos, pudiéndose atacar problemas que de otra manera hubiese sido imposible Objetivos El objetivo general es diseñar e implementar una solución computacional que permita detectar cúmulos de galaxias en forma paralela, utilizando un framework que permita distribuir la carga de procesamiento. Los objetivos específicos son: Construir una aplicación utilizando el framework Hadoop para llevar a cabo el análisis de datos en forma paralela. Lo anterior considera el diseño e implementación de un programa que realice una buena partición de los datos, resuelva el problema sobre cada partición, y calcule la solución completa re ensamblando los resultados parciales. Evaluar si se efectúa una mejora a la solución existente, lo que implica comparar la aplicación secuencial y la aplicación paralela en término de tiempos y consumo de recursos. Determinar las diferencias y similitudes entre los resultados obtenidos por el programa secuencial y el paralelo. 8

9 1.5. Contenido de la memoria En la sección 2 se presentan las tecnologías disponibles y el algoritmo que se quiere paralelizar. En la sección 3 se analizan las herramientas con las que se cuenta para el desarrollo del software, se comparan las diferentes alternativas y su estado, y se decide cuáles se van a utilizar y de qué forma. En la sección 4 se presentan las decisiones que se consideraron para el diseño del software, se propone un diseño final, y se muestra y explica el código implementado. En la sección 5 se presentan los experimentos realizados para probar el software y determinar su eficacia y eficiencia. Se incluye una descripción de los datos de prueba, las pruebas mismas, y el desempeño del software. Finalmente, en la sección 6 se presentan las conclusiones a las que se llegó con este trabajo, según los objetivos que se habían planteado, y se proponen acciones para continuarlo a futuro. 9

10 2. Antecedentes En este capítulo se presentan los antecedentes del problema, tales como las tecnologías disponibles y el algoritmo que se quiere paralelizar Tipos de paralelismo La computación paralela se puede llevar a cabo en varios niveles, desde la cantidad de bits que se pueden procesar por ciclo, la cantidad de instrucciones que se pueden procesar en forma paralela, la paralelización en procesamiento de datos, hasta la paralelización de tareas. De todos modos, sólo se pueden realizar ciertos cálculos en paralelo: algunos deben ser secuenciales pues dependen de resultados obtenidos por cálculos previos. Se puede hacer una clasificación de los computadores que trabajan en forma paralela según el nivel al cual el hardware provee el paralelismo. Para el paralelismo a nivel de núcleos de procesamiento, esta clasificación es a grandes rasgos análoga a la distancia entre los nodos básicos de computación, y no son mutuamente excluyentes. Computación Multinúcleo: Un procesador multinúcleo es aquel que posee múltiples unidades de ejecución (núcleos) en el mismo chip. Estos procesadores tienen la capacidad de ejecutar múltiples instrucciones por ciclo, provenientes de múltiples flujos de instrucciones. Multiprocesamiento Simétrico: Un multiprocesador simétrico es un computador que posee múltiples procesadores idénticos, los cuales comparten el acceso a la memoria a través de un único bus de datos. Esto permite asignar más de un procesador a una o varias tareas. Dado el diseño del acceso a datos, los multiprocesadores simétricos suelen no tener más de 32 procesadores. Computación Distribuida: La computación distribuida es un modelo de computación donde se usan múltiples computadores para la resolución de un problema. Estos se coordinan entre sí a través de un sistema distribuido, definido como: una colección de computadores separados físicamente y conectados entre sí por una red de comunicaciones distribuida, donde cada máquina posee sus componentes de hardware y software que el usuario percibe como un solo sistema. Se define como nodo a una unidad individual, típicamente una máquina, dentro de un sistema distribuido. El framework utilizado en el presente trabajo se construyó para que pudiese ser utilizado por cualquiera de las tres clases de computación paralela, abstrayéndose de este nivel y funcionando indiferente a la 10

11 clase de paralelismo y cantidad de núcleos utilizados. Sin embargo, presta su verdadera contribución al ser aplicada con computación distribuida, al crecer la capacidad de procesamiento de datos en paralelo en órdenes de magnitud. Para la cantidad de datos que genera la ciencia, y la astronomía en particular, se hace necesario que el procesamiento de información se haga con computación distribuida. La computación a gran escala presenta un gran número de dificultades. La mayoría de éstas derivan de la coordinación entre múltiples máquinas para la solución de un problema, y las consiguientes fallas que se pueden presentar, tanto de comunicación, como de los nodos en sí. En un ambiente distribuido, las fallas parciales son esperadas e incluso comunes: las redes pueden experimentar variados tipos de problemas derivados de fallas físicas o de congestión, los cuales impiden que los datos lleguen a destino en el momento que debían; los nodos pueden dejar de funcionar debido a problemas de hardware, software, o de capacidad; los datos pueden estar corrompidos por causas en la generación, transmisión o por ataques maliciosos; puede haber diferencias en el protocolo de transmisión de diferentes versiones del software; los relojes pueden desincronizarse; pueden ocurrir problemas de sincronización en el acceso a datos; etc. El resto del sistema distribuido debiese ser capaz de recuperarse en forma independiente del elemento fallido, para cada uno de los casos posibles de falla (8). Además de los problemas asociados con fallas en la red o en los nodos, también existe el problema de que los nodos poseen hardware con capacidad finita. Los elementos más importantes para estos efectos son el tiempo de procesador, la memoria, el espacio en disco y el ancho de banda de la red. Cada nodo tiene por lo general algunos gigabytes de memoria, lo que implica que si el set de datos es de algunos terabytes, se necesitarían del orden de miles de nodos para guardar la información en RAM. Los discos duros proveen un espacio de almacenamiento mucho mayor, que pueden ser del orden de terabytes. Sin embargo, los sets de datos que se generan al procesar la información pueden llegar a ocupar mucho más espacio que el input original, lo que podría llevar a sobrepasar la capacidad de almacenamiento de un nodo y recurrir a la de otro. El ancho de banda es un recurso escaso incluso en una red interna, y mucho más si los nodos están separados por medianas o grandes distancias. Es fácil que se saturen las redes al haber grandes cantidades de datos siendo transferidos, y que por ello se pierdan datos o no lleguen en el momento requerido. Un sistema distribuido de gran escala debe poder manejar los recursos previamente mencionados en forma eficiente, buscando un equilibrio entre el funcionamiento del sistema en forma íntegra y el procesamiento de datos. 11

12 El desafío más grande en el diseño de sistemas distribuidos es la sincronización entre los nodos. Si éstos tienen la capacidad de comunicarse entre sí de manera explícita, se enfrentan riesgos como producir más llamados a procedimientos remotos de los que soporta el sistema, bloqueos mutuos sobre los datos y otras condiciones de carrera. Además está la complejidad de diseñar un sistema que sea capaz de recuperarse ante el fallo de un nodo, con poca pérdida de recursos y redistribuyendo la carga de manera eficiente en el resto del sistema Herramientas La programación funcional utiliza frecuentemente las funciones map y reduce, las que sirvieron como base para que Google creara el framework MapReduce (10). Este modelo de programación tiene la ventaja de proveer automáticamente paralelización y distribución, además de ser tolerante a fallas. Éste fue utilizado por el framework Apache Hadoop, el cual permite crear programas paralelos. Map-reduce trabaja con pares de key/values (llave/valores): la función map recibe uno de estos pares, lo procesa y genera un set de pares intermedios; la función reduce procesa los pares intermedios para generar uno o varios valores finales. Esto se ve ilustrado en el siguiente ejemplo, donde se cuentan las palabras de un texto: int resultado=0 La función map recibe un texto, valorentrada, y emite un par por cada palabra, donde el key es la palabra y el value es 1. En este programa en particular no se utiliza el primer parámetro recibido, llaveentrada. La función reduce recibe entonces un key, llaveintermedia, y una lista con el valor 1 repetido tantas veces como apariciones del key haya habido en el texto original, valoresintermedios, y emite la suma de los valores de la lista. 12

13 Tanto la función map como reduce se pueden ejecutar en forma paralela. Los datos de entrada se pueden distribuir en tantos map como se estime conveniente, usualmente la misma cantidad que el número de procesadores disponibles. Luego se crean tantas funciones reduce como keys hayan, las cuales son procesadas en forma paralela por los procesadores que se asignen. El software se instaló y configuró en varios modos para evaluar la ejecución. También se investigaron herramientas disponibles y se escribieron programas básicos para evaluar la complejidad de desarrollar con este framework. También se buscó información para determinar si el framework es capaz de manejar la gran cantidad de datos que se requiere en la búsqueda de cúmulos de galaxias. Según los creadores, éste es capaz de manejar del orden de petabytes, lo cual es más que suficiente considerando que la cantidad de datos astronómicos que se quieren procesar es de alrededor de 6 terabytes. Además, ya se ha utilizado en el procesamiento de imágenes astronómicas en universidades como la Washington University (11). Respecto a dónde y cómo se debería ejecutar el software desarrollado para procesar la información: el framework está pensado para ser usado con cualquier cantidad de recursos, pero en particular funciona bien con cloud computing. El modelo de programación map-reduce tiene la ventaja de que la escalabilidad es directa, por lo que no es necesario esfuerzo alguno para ejecutarlo en una cantidad mayor de máquinas. Al utilizar cloud computing se pueden arrendar un número variable de recursos, por lo que se puede reducir el tiempo de procesamiento de forma proporcional a la cantidad de procesadores que se arrienden. En caso de aumentar la cantidad de datos a procesar, se pueden arrendar más recursos, pudiendo mantenerse el tiempo de procesamiento relativamente independiente de la cantidad de datos de entrada. Además existen proyectos de grandes compañías como The New York Times y famosas universidades como Stanford, que se han llevado a cabo con Apache Hadoop sobre la plataforma Amazon Elastic Compute Cloud (12). Haciendo una breve comparación con otros sistemas de computación paralela sobre grandes volúmenes de datos, existen otras alternativas como Condor, pero ésta no distribuye los datos automáticamente como Apache Hadoop. Esto significa que el control de datos se debe realizar de forma manual, y que la colaboración entre nodos se debe programar con sistemas de comunicación como MPI, lo cual conlleva un gran esfuerzo y aumenta la probabilidad de errores. Esto no es necesario en Apache Hadoop, pues son tareas automatizadas que constituyen parte del framework, y de las cuales el programador se puede abstraer. Si bien la eficiencia puede ser menor que al computarlo con otros sistemas, la ganancia en 13

14 facilidad para el programador, la escalabilidad directa, y los bajos costos de cloud computing hacen de este framework una buena opción para el proyecto Algoritmo secuencial de detección de cúmulos de galaxias Daniel Pizarro desarrolló un software llamado Vocludet para la detección de cúmulos de galaxias (2). Éste consta de dos partes, el algoritmo VTMLE y el DePropris, siendo el primero utilizado para la detección de cúmulos de galaxias. El algoritmo VTMLE recibe como entrada un set de puntos en un espacio de tres dimensiones, donde cada punto representa las coordenadas de una galaxia que hay en el espacio que se quiere analizar. Con esta información se calcula el diagrama de Voronoi que se construye a partir de los puntos, el cual entrega una estimación de la densidad local de galaxias para cada punto del set. Se itera sobre los datos de entrada para encontrar posibles cúmulos de galaxias, lo que consta de las siguientes fases: Detección de semilla: Para esto se busca el área de mayor densidad de galaxias, lo que equivale a buscar la celda de menor volumen en el diagrama. Se debe verificar que la semilla encontrada no sea parte de un cúmulo encontrado en una iteración previa. Detección de miembros del cúmulo (Algoritmo 1): Partiendo con la semilla como cúmulo base, se trata de aumentar el valor resultante de una función de probabilidad, el Estimador de Máxima Verosimilitud (EMV), agregando los puntos vecinos al cúmulo. Este proceso se lleva a cabo hasta que una de las siguientes dos condiciones deja de cumplirse: o No se puede incrementar el EMV del conjunto al agregar alguno de sus vecinos. En este caso se encontró un cúmulo y se guardan los datos. o El elemento agregado forma parte de otro cúmulo. En este caso se descarta la semilla que originó este cúmulo. El algoritmo recibe el diagrama de Voronoi previamente calculado con la herramienta Qhull. Este software es capaz de generar el diagramas de Voronoi en varias dimensiones. En particular sirve para generar el diagrama de Voronoi en tres dimensiones. A continuación, se presenta el pseudocódigo del algoritmo para el caso de la búsqueda de un cúmulo: 14

15 Algoritmo 1: Algoritmo VTMLE Este pseudocódigo debe enmarcarse dentro del algoritmo general, que busca todos los cúmulos de galaxias en una zona del espacio. En éste se deben hacer la búsqueda de la semilla y el conteo de las celdas usadas y cúmulos de galaxias encontrados, e invocar al algoritmo de búsqueda individual para encontrar posibles cúmulos de galaxias a partir de cada semilla. Se presenta el pseudocódigo del algoritmo general a continuación: 15

16 Algoritmo 2: Algoritmo de detección de cúmulos 16

17 3. Análisis En este capítulo se analizan las herramientas con las que se cuenta para el desarrollo del software, se comparan las diferentes alternativas y su estado, y se decide cuáles se van a utilizar de qué forma Arquitectura de Hadoop Hadoop es un framework que permite procesar datos usando el modelo de programación map-reduce. Está diseñado para procesar grandes volúmenes de información de manera eficiente a través de computación distribuida, conectando computadores y coordinándolos para trabajar juntos en paralelo. Permite trabajar con diferentes cantidades de nodos, permitiendo escalabilidad desde un servidor hasta miles de máquinas, cada una con capacidad de computación y almacenamiento locales. El sistema está diseñado para detectar y manejar fallas en el nivel de aplicación. Esto permite despreocuparse de contar con hardware de alta disponibilidad, ya que el sistema es capaz de soportar y manejar fallas en cualquiera de los nodos del cluster. Si bien existen otros sistemas que realizan procesamiento de grandes volúmenes de datos en sistemas distribuidos, Hadoop tiene la ventaja de proveer un modelo de programación simple, el cual permite escribir y testear sistemas distribuidos de forma rápida. Además provee un sistema eficiente de distribución automática de datos y trabajo en el conjunto de nodos, y también dentro de cada nodo con sus respectivos núcleos. El framework está constituido por las siguientes componentes, que en su totalidad permiten la creación y ejecución de programas distribuidos y en forma paralela: Hadoop Common: Un set de herramientas que sirven de base para otros componentes y proyectos de Hadoop. Esto incluye el sistema de archivos básico, manejo de llamadas a procedimientos remotos, y bibliotecas de serialización. Hadoop Distributed File System (HDFS): Un sistema de archivos distribuido, que provee un rápido acceso y alto flujo de datos. Es el sistema primario de almacenamiento de datos usado por las aplicaciones de Hadoop, el cual replica los bloques de datos y los distribuye en nodos del cluster. Es esta distribución y redundancia la que permite el acceso rápido y la tolerancia a fallos en los nodos del cluster. 17

18 Hadoop MapReduce: Un framework de software para el procesamiento distribuido de grandes cantidades de datos en clusters de computadores. Éste provee un modelo de programación que permite crear aplicaciones que procesan datos en forma paralela. Existen también proyectos que extienden las capacidades de Hadoop, agregando funcionalidades o usándolo como base para realizar tareas de más alto nivel. Entre éstos destacan lenguajes de alto nivel que facilitan el acceso y procesamiento de datos Distribución de datos En un cluster de Hadoop, los datos se distribuyen a todos los nodos a medida que éstos se van cargando en el sistema, como muestra la Figura 1. El HDFS se encarga de particionar los datos y distribuirlos en forma redundante, de tal manera que cada conjunto de datos se encuentre replicado en más de un nodo. Esto evita pérdida o inaccesibilidad a cualquier conjunto de datos, en caso de presentarse fallas en algún nodo o en las redes. Un sistema de monitoreo activo se encarga de replicar los datos en respuesta a fallas en el sistema. A pesar de su distribución en varios nodos, los conjuntos de datos forman parte del mismo espacio de nombres, por lo que son fácil y completamente accesibles. Al cargar la información al sistema, cada archivo se divide en líneas, o en algún otro formato específico para la lógica del programa en particular. A esto se le llama orientación a registros, donde cada registro es una línea o su símil. Cada proceso que esté corriendo en cada nodo procesa un subconjunto de estos registros, siendo el framework quien organiza los datos que se procesan, según la proximidad que éstos tengan a los datos. De esta forma, la mayoría de los datos son leídos directamente desde el disco duro local, aliviando la carga en las redes y evitando transferencias innecesarias. La estrategia utilizada para la organización tareas consiste en mover la capacidad de computación hacia los datos, en vez de mover los datos. Esto se traduce en una alta localización de los datos, que a su vez resulta en un alto desempeño. 18

19 Figura 1: Distribución de datos en Hadoop Procesamiento de datos Hadoop limita la cantidad de comunicación que puede ocurrir entre los procesos, ya que cada registro es procesado por una tarea aislada del resto. Aunque esto suena como una gran limitación en un principio, hace que el framework sea mucho más confiable. Hadoop no está diseñado para ejecutar cualquier programa y distribuirlo en un cluster, sino que los programas deben estar escritos en acuerdo a un modelo de programación en particular, llamado MapReduce. En MapReduce, los registros son procesados de forma aislada por tareas llamadas mappers, las que suelen utilizarse para clasificar datos. En caso de ser necesario, un proceso llamado shuffle toma los resultados obtenidos por todos los mappers, y los agrupa según estas clasificaciones. Finalmente los datos son procesados por tareas llamadas reducers, donde cada una recibe datos pertenecientes a una o más clasificaciones, y las procesa. La Figura 2 muestra el proceso recién descrito. 19

20 Figura 2: Procesos de map y reduce en Hadoop Los nodos de un cluster de Hadoop se comunican entre sí, pero a diferencia de otros sistemas distribuidos, donde los desarrolladores de la aplicación ordenan explícitamente los flujos de datos de nodo a nodo a través de buffers MPI, la comunicación en Hadoop se lleva a cabo de forma implícita. Los subconjuntos de datos pueden ser etiquetados, lo que es utilizado por Hadoop para saber cómo enviar la información a un nodo destinatario común. Hadoop maneja internamente todas las transferencias de datos y los asuntos referentes a la topología del cluster. Al restringir la comunicación entre los nodos, Hadoop hace que el sistema distribuido sea mucho más confiable. Las fallas individuales en los nodos pueden solucionarse reiniciando las tareas en otras máquinas. Dado que las tareas a nivel de usuario no se comunican explícitamente entre sí, no es necesario un intercambio de mensajes en los programas de usuario, ni tampoco definir puntos de retorno para retomar la ejecución en caso de fallas. Ante la falla en un nodo, el resto de los nodos continúan operando como si nada hubiese pasado, dejando las complicaciones del reinicio parcial del programa a la capa subyacente de Hadoop. 20

21 Escalabilidad Una de los grandes beneficios de Hadoop en comparación a otros sistemas distribuidos, es su curva plana de escalabilidad. El rendimiento de Hadoop puede no ser espectacular si es que se ejecuta con pocos datos bajo un pequeño número de nodos, ya que el sobrecosto asociado a iniciar programas de Hadoop es relativamente alto. Otros paradigmas de programación paralelos o distribuidos como MPI (Message Passing Interface) pueden presentar un mejor desempeño al ejecutarse con menos de diez máquinas. Aunque el esfuerzo de coordinación entre un pequeño número de máquinas puede ser mejor llevado por tales tipos de sistemas, el costo que se paga en rendimiento y esfuerzo por parte de los ingenieros al añadir más hardware como resultado del incremento en el volumen de datos, crece de forma no lineal. Un programa escrito en otros frameworks distribuidos, pueden requerir grandes cantidades de refactorización al escalar de diez a cien o a mil máquinas. Esto puede requerir que el programa se reescriba varias veces; elementos fundamentales de su diseño pueden también poner un tope a la escala de crecimiento de la aplicación. Hadoop, en contraste, está específicamente diseñado para tener una curva de escalabilidad muy plana. Luego de que un programa en Hadoop está escrito y funcionando en diez nodos, muy poco o nulo trabajo es requerido para correr el mismo programa sobre una cantidad mucho mayor de hardware. Se requiere muy poco trabajo extra sobre una aplicación para poder crecer en órdenes de magnitud. La plataforma de Hadoop subyacente maneja los recursos de datos y hardware, y provee un crecimiento en el rendimiento dependiente, proporcional al número de máquinas disponibles HDFS El sistema de archivos distribuidos de Hadoop, HDFS, es un sistema de archivos diseñado para guardar grandes cantidades de datos (terabytes e incluso petabytes), y proveer acceso de alto flujo de datos a esta información. Los archivos son almacenados de manera redundante a través de múltiples máquinas, para asegurar su resistencia a fallas y su alta disponibilidad a aplicaciones altamente paralelas, tal como se muestra en la Figura 3. 21

22 Figura 3: HDFS de Hadoop Un sistema de archivos distribuido está diseñado para almacenar grandes cantidades de datos y proveer acceso a estos datos a la mayor cantidad de clientes distribuidos a través de la red. Existen varios sistemas de archivos distribuidos que resuelven este problema de diferentes maneras, como el NFS (Network File System) de Linux. HDFS está diseñado para ser robusto frente a un gran número de problemas a los que otros sistemas de archivos distribuidos, como NFS son vulnerables. En particular: El HDFS está diseñado para almacenar una gran cantidad de información (terabytes o petabytes). Esto requiere distribuir los datos en un gran número de máquinas. También es capaz de manejar tamaños de archivo mucho mayores a los que puede manejar NFS. El HDFS almacena los datos de manera confiable. Si falla alguna máquina del cluster, los datos deberían seguir estando disponibles. El HDFS provee acceso rápido y escalable a esta información. Debiese ser posible proveer servicios a un número mayor de clientes sólo agregando más máquinas al cluster. El HDFS se integra bien con el Hadoop MapReduce, permitiendo que los datos sean leídos y computados localmente cuando sea posible. 22

Alessandro Chacón 05-38019. Ernesto Level 05-38402. Ricardo Santana 05-38928

Alessandro Chacón 05-38019. Ernesto Level 05-38402. Ricardo Santana 05-38928 Alessandro Chacón 05-38019 Ernesto Level 05-38402 Ricardo Santana 05-38928 CONTENIDO Universo Digital Hadoop HDFS: Hadoop Distributed File System MapReduce UNIVERSO DIGITAL 161 EB 2006 Fuente: International

Más detalles

4. Programación Paralela

4. Programación Paralela 4. Programación Paralela La necesidad que surge para resolver problemas que requieren tiempo elevado de cómputo origina lo que hoy se conoce como computación paralela. Mediante el uso concurrente de varios

Más detalles

FaceFinder MÓDULO DE BÚSQUEDA DE PERSONAS DENTRO DE UNA BASE DE DATOS DE ROSTROS

FaceFinder MÓDULO DE BÚSQUEDA DE PERSONAS DENTRO DE UNA BASE DE DATOS DE ROSTROS FaceFinder MÓDULO DE BÚSQUEDA DE PERSONAS DENTRO DE UNA BASE DE DATOS DE ROSTROS Introducción Los algoritmos utilizados para el procesamiento de imágenes son de complejidad computacional alta. Por esto

Más detalles

Memoria Compartida Distribuida (DSM) Sistema de Archivos

Memoria Compartida Distribuida (DSM) Sistema de Archivos Memoria Compartida Distribuida (DSM) La memoria compartida distribuida es una abstracción que se propone como alternativa a la comunicación por mensajes. Memoria compartida basada en páginas: este esquema

Más detalles

Unidad 1: Conceptos generales de Sistemas Operativos.

Unidad 1: Conceptos generales de Sistemas Operativos. Unidad 1: Conceptos generales de Sistemas Operativos. Tema 3: Estructura del sistema operativo. 3.1 Componentes del sistema. 3.2 Servicios del sistema operativo. 3.3 Llamadas al sistema. 3.4 Programas

Más detalles

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE PRUEBAS DE SOFTWARE La prueba del software es un elemento crítico para la garantía de la calidad del software. El objetivo de la etapa de pruebas es garantizar la calidad del producto desarrollado. Además,

Más detalles

APACHE HADOOP. Daniel Portela Paz Javier Villarreal García Luis Barroso Vázquez Álvaro Guzmán López

APACHE HADOOP. Daniel Portela Paz Javier Villarreal García Luis Barroso Vázquez Álvaro Guzmán López APACHE HADOOP Daniel Portela Paz Javier Villarreal García Luis Barroso Vázquez Álvaro Guzmán López Objetivos 1. Qué es Apache Hadoop? 2. Funcionalidad 2.1. Map/Reduce 2.2. HDFS 3. Casos prácticos 4. Hadoop

Más detalles

Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente

Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente En este capítulo definimos los requisitos del modelo para un sistema centrado en la mejora de la calidad del código fuente.

Más detalles

BIG DATA. Jorge Mercado. Software Quality Engineer

BIG DATA. Jorge Mercado. Software Quality Engineer BIG DATA Jorge Mercado Software Quality Engineer Agenda Big Data - Introducción Big Data - Estructura Big Data - Soluciones Conclusiones Q&A Big Data - Introducción Que es Big Data? Big data es el termino

Más detalles

SISTEMAS DE ARCHIVOS DISTRIBUIDOS

SISTEMAS DE ARCHIVOS DISTRIBUIDOS SISTEMAS DE ARCHIVOS DISTRIBUIDOS Tema # VII Sistemas de operación II Abril-Julio 2008 Yudith Cardinale Introducción Requisitos Aspectos de Diseño Servicios de archivos Servicios de directorios Módulo

Más detalles

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos. RAIDS MODO LINEAL Es un tipo de raid que muestra lógicamente un disco pero se compone de 2 o más discos. Solamente llena el disco 0 y cuando este está lleno sigue con el disco 1 y así sucesivamente. Este

Más detalles

Análisis de sentimientos de tweets.

Análisis de sentimientos de tweets. Análisis de sentimientos de tweets. JIT-CITA 2013 Resumen Un sensor de sentimientos de tweets para identificar los mensajes positivos, negativos y neutros sobre cualquier trend que se tome sobre esta red

Más detalles

Generalidades Computacionales

Generalidades Computacionales Capítulo 2 Generalidades Computacionales 2.1. Introducción a los Computadores Definición: Un computador es un dispositivo electrónico que puede transmitir, almacenar, recuperar y procesar información (datos).

Más detalles

CLUSTER FING: PARALELISMO de MEMORIA DISTRIBUIDA

CLUSTER FING: PARALELISMO de MEMORIA DISTRIBUIDA CLUSTER FING: PARALELISMO de MEMORIA DISTRIBUIDA SERGIO NESMACHNOW Centro de Cálculo, Instituto de Computación FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY CONTENIDO Introducción: arquitecturas

Más detalles

Sybase IQ Servidor analítico con arquitectura basada en columnas

Sybase IQ Servidor analítico con arquitectura basada en columnas Sybase IQ Servidor analítico con arquitectura basada en columnas www.sybase.es Sybase IQ Descripción Tener acceso a toda la información de que dispone su organización, con el fin de analizarla no es hoy

Más detalles

Big data A través de una implementación

Big data A través de una implementación Big data A través de una implementación Lic. Diego Krauthamer Profesor Adjunto Interino del Área Base de Datos Universidad Abierta Interamericana Facultad de Tecnología Informática Buenos Aires. Argentina

Más detalles

Es un software del tipo MAP-REDUCE realizada usando la librería MPI para la

Es un software del tipo MAP-REDUCE realizada usando la librería MPI para la Es un software del tipo MAP-REDUCE realizada usando la librería MPI para la ejecución de programas secuenciales de forma paralela con el requisito de no modificar los programas secuenciales. La idea fundamental

Más detalles

Marco Teórico MARCO TEÓRICO. AGNI GERMÁN ANDRACA GUTIERREZ

Marco Teórico MARCO TEÓRICO. AGNI GERMÁN ANDRACA GUTIERREZ MARCO TEÓRICO. 13 14 Virtualización Hablar de virtualización es hablar de un concepto que describe la posibilidad de tener varios sistemas operativos funcionando al mismo tiempo en un mismo equipo físico.

Más detalles

Capítulo 1: Marco teórico

Capítulo 1: Marco teórico Capítulo 1: Marco teórico Área de Soporte Técnico Dentro de Oracle, como en cualquier compañía de software existe el área de Soporte Técnico, cuyo objetivo principal es el de brindar asistencia y proveer

Más detalles

Global File System (GFS)...

Global File System (GFS)... Global File System (GFS)... Diferente a los sistemas de ficheros en red que hemos visto, ya que permite que todos los nodos tengan acceso concurrente a los bloques de almacenamiento compartido (a través

Más detalles

18 y 19 Sistemas de Archivos Distribuidos y Tarea 05

18 y 19 Sistemas de Archivos Distribuidos y Tarea 05 18 y 19 Sistemas de Archivos Distribuidos y Tarea 05 Prof. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco efranco.docencia@gmail.com Estructuras de datos (Prof. Edgardo A. Franco)

Más detalles

Nicolás Zarco Arquitectura Avanzada 2 Cuatrimestre 2011

Nicolás Zarco Arquitectura Avanzada 2 Cuatrimestre 2011 Clusters Nicolás Zarco Arquitectura Avanzada 2 Cuatrimestre 2011 Introducción Aplicaciones que requieren: Grandes capacidades de cómputo: Física de partículas, aerodinámica, genómica, etc. Tradicionalmente

Más detalles

Análisis de desempeño y modelo de escalabilidad para SGP

Análisis de desempeño y modelo de escalabilidad para SGP Análisis de desempeño y modelo de escalabilidad para SGP Este documento es producto de la experiencia de Analítica en pruebas de stress sobre el software SGP. Estas pruebas se realizaron sobre un proceso

Más detalles

Gestión de la Virtualización

Gestión de la Virtualización Gestión de la Virtualización Las arquitecturas de TI tradicionales se han basado generalmente en silos, con recursos informáticos dedicados a aplicaciones específicas y el exceso o sobre dotación de recursos

Más detalles

Arquitectura de Aplicaciones

Arquitectura de Aplicaciones 1 Capítulo 13: Arquitectura de aplicaciones. - Sommerville Contenidos del capítulo 13.1 Sistemas de procesamiento de datos 13.2 Sistemas de procesamiento de transacciones 13.3 Sistemas de procesamiento

Más detalles

TEMA 1: INTRODUCCIÓN

TEMA 1: INTRODUCCIÓN 1 DISEÑO Y DESARROLLO DE COMPILADORES TEMA 1: INTRODUCCIÓN Qué es un Compilador? Un compilador no es más que un traductor, es decir, un programa que nos permite pasar información de un lenguaje a otro.

Más detalles

COMPUTADORES MULTINUCLEO. Stallings W. Computer Organization and Architecture 8ed

COMPUTADORES MULTINUCLEO. Stallings W. Computer Organization and Architecture 8ed COMPUTADORES MULTINUCLEO Stallings W. Computer Organization and Architecture 8ed Computador multinucleo Un computador multinúcleocombina dos o mas procesadores (llamados núcleos) en una única pieza de

Más detalles

Hadoop. Cómo vender un cluster Hadoop?

Hadoop. Cómo vender un cluster Hadoop? Hadoop Cómo vender un cluster Hadoop? ÍNDICE Problema Big Data Qué es Hadoop? Descripción HDSF Map Reduce Componentes de Hadoop Hardware Software 3 EL PROBLEMA BIG DATA ANTES Los datos los generaban las

Más detalles

51 Int. CI.: G06F 17/30 (2006.01) TRADUCCIÓN DE PATENTE EUROPEA

51 Int. CI.: G06F 17/30 (2006.01) TRADUCCIÓN DE PATENTE EUROPEA 19 OFICINA ESPAÑOLA DE PATENTES Y MARCAS ESPAÑA 11 Número de publicación: 2 460 021 1 Int. CI.: G06F 17/ (06.01) 12 TRADUCCIÓN DE PATENTE EUROPEA T3 96 Fecha de presentación y número de la solicitud europea:

Más detalles

Permite compartir recursos en forma coordinada y controlada para resolver problemas en organizaciones multiinstitucionales

Permite compartir recursos en forma coordinada y controlada para resolver problemas en organizaciones multiinstitucionales The Anatomy of the Grid Enabling Scalable Virtual Organization Autores : Ian Foster, Carl Kesselman y Steven Tuecke. 2001 GRIDS y Organizaciones Virtuales Permite compartir recursos en forma coordinada

Más detalles

Una base de datos es una colección de información ordenada e interrelacionada que es de importancia para una empresa.

Una base de datos es una colección de información ordenada e interrelacionada que es de importancia para una empresa. BASES DE DATOS Una base de datos es una colección de información ordenada e interrelacionada que es de importancia para una empresa. La creación de una base de datos debe ser realizada cuidadosamente procurando

Más detalles

Las compañías que proporcionan espacio de un servidor a sus clientes se suelen denominar con el término en inglés web host.

Las compañías que proporcionan espacio de un servidor a sus clientes se suelen denominar con el término en inglés web host. El alojamiento web (en inglés web hosting) es el servicio que provee a los usuarios de Internet un sistema para poder almacenar información, imágenes, vídeo, o cualquier contenido accesible vía web. Es

Más detalles

Proyecto Fin de Carrera OpenNebula y Hadoop: Cloud Computing con herramientas Open Source

Proyecto Fin de Carrera OpenNebula y Hadoop: Cloud Computing con herramientas Open Source Proyecto Fin de Carrera OpenNebula y Hadoop: Cloud Computing con herramientas Open Source Francisco Magaz Villaverde Consultor: Víctor Carceler Hontoria Junio 2012 Contenido Introducción Qué es Cloud Compu5ng?

Más detalles

Facultad de Ingeniería ISSN: 0121-1129 revista.ingenieria@uptc.edu.co. Universidad Pedagógica y Tecnológica de Colombia. Colombia

Facultad de Ingeniería ISSN: 0121-1129 revista.ingenieria@uptc.edu.co. Universidad Pedagógica y Tecnológica de Colombia. Colombia Facultad de Ingeniería ISSN: 0121-1129 revista.ingenieria@uptc.edu.co Universidad Pedagógica y Tecnológica de Colombia Colombia Amézquita-Mesa, Diego Germán; Amézquita-Becerra, Germán; Galindo-Parra, Omaira

Más detalles

Arquitectura y seguridad

Arquitectura y seguridad En el desarrollo del SIGOB nos hemos enfrentado a diversos problemas que nos han llevado a investigar y desarrollar nuestras propias tecnologías. En este documento presentamos cada uno de los desarrollos

Más detalles

Compiladores y Lenguajes de Programación. Maria de Guadalupe Cota Ortiz

Compiladores y Lenguajes de Programación. Maria de Guadalupe Cota Ortiz Compiladores y Lenguajes de Programación Maria de Guadalupe Cota Ortiz Organizaciones que rigen las normas para estandarización de Lenguajes de Programación IEEE (Instituto de Ingenieros Eléctricos y Electrónicos)

Más detalles

Fundamentos de Sistemas Operativos

Fundamentos de Sistemas Operativos Fundamentos de Sistemas Operativos Sistemas Informáticos Fede Pérez Índice TEMA Fundamentos de Sistemas Operativos 1. - Introducción 2. - El Sistema Operativo como parte de un Sistema de Computación 2.1

Más detalles

La Arquitectura de las Máquinas Virtuales.

La Arquitectura de las Máquinas Virtuales. La Arquitectura de las Máquinas Virtuales. La virtualización se ha convertido en una importante herramienta en el diseño de sistemas de computación, las máquinas virtuales (VMs) son usadas en varias subdiciplinas,

Más detalles

:Arquitecturas Paralela basada en clusters.

:Arquitecturas Paralela basada en clusters. Computación de altas prestaciones: Arquitecturas basadas en clusters Sesión n 1 :Arquitecturas Paralela basada en clusters. Jose Luis Bosque 1 Introducción Computación de altas prestaciones: resolver problemas

Más detalles

Herramienta para la construcción de un cluster y la distribución de carga entre los nodos

Herramienta para la construcción de un cluster y la distribución de carga entre los nodos Herramienta para la construcción de un cluster y la distribución de carga entre los nodos Rubén A. González García 1, Gabriel Gerónimo Castillo 2 1 Universidad Juárez Autónoma de Tabasco, Av. Universidad

Más detalles

Nombres y Sistemas de Archivos en Sistemas Distribuidos

Nombres y Sistemas de Archivos en Sistemas Distribuidos Nombres y Sistemas de Archivos en Sistemas Distribuidos Definiciones Nombre: cadena de bits o caracteres que se usan para referirse a una entidad. Entidad: casi cualquier cosa en un sistema distribuido.

Más detalles

computadoras que tienen este servicio instalado se pueden publicar páginas web tanto local como remotamente.

computadoras que tienen este servicio instalado se pueden publicar páginas web tanto local como remotamente. Investigar Qué es un IIS? Internet Information Services o IIS es un servidor web y un conjunto de servicios para el sistema operativo Microsoft Windows. Originalmente era parte del Option Pack para Windows

Más detalles

INTRODUCCIÓN A LA COMPUTACION EN LA NUBE Y BIG DATA (1) Ing. Carlos Ormella Meyer

INTRODUCCIÓN A LA COMPUTACION EN LA NUBE Y BIG DATA (1) Ing. Carlos Ormella Meyer INTRODUCCIÓN A LA COMPUTACION EN LA NUBE Y BIG DATA (1) Ing. Carlos Ormella Meyer En los últimos años, el interés por la Computación en la Nube (Cloud Computing), tanto para uso personal como para negocios,

Más detalles

Motores de Búsqueda Web Tarea Tema 2

Motores de Búsqueda Web Tarea Tema 2 Motores de Búsqueda Web Tarea Tema 2 71454586A Motores de Búsqueda Web Máster en Lenguajes y Sistemas Informáticos - Tecnologías del Lenguaje en la Web UNED 30/01/2011 Tarea Tema 2 Enunciado del ejercicio

Más detalles

Capítulo 5. Cliente-Servidor.

Capítulo 5. Cliente-Servidor. Capítulo 5. Cliente-Servidor. 5.1 Introducción En este capítulo hablaremos acerca de la arquitectura Cliente-Servidor, ya que para nuestra aplicación utilizamos ésta arquitectura al convertir en un servidor

Más detalles

Arquitectura para análisis de información. Zombi es una arquitectura que proporciona de manera integrada los componentes

Arquitectura para análisis de información. Zombi es una arquitectura que proporciona de manera integrada los componentes Capítulo 4 Arquitectura para análisis de información propuesta 4.1 Arquitectura Zombi es una arquitectura que proporciona de manera integrada los componentes necesarios para el análisis de información

Más detalles

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS 4 ARQUITECTURA DE DISTRIBUCIÓN DE DATOS Contenido: Arquitectura de Distribución de Datos 4.1. Transparencia 4.1.1 Transparencia de Localización 4.1.2 Transparencia de Fragmentación 4.1.3 Transparencia

Más detalles

TEMA: PROTOCOLOS TCP/IP

TEMA: PROTOCOLOS TCP/IP TEMA: PROTOCOLOS TCP/IP HISTORIA: El Protocolo de Internet (IP) y el Protocolo de Transmisión (TCP), fueron desarrollados inicialmente en 1973 por el informático estadounidense Vinton Cerf como parte de

Más detalles

Especificación de la secuencia de mensajes que se han de intercambiar. Especificación del formato de los datos en los mensajes.

Especificación de la secuencia de mensajes que se han de intercambiar. Especificación del formato de los datos en los mensajes. SISTEMAS DISTRIBUIDOS DE REDES 2.- MODELOS ORIENTADOS A OBJETOS DISTRIBUIDOS 2.1. Tecnologías de sistemas distribuidos Para la implementación de sistemas distribuidos se requiere de tener bien identificados

Más detalles

Tema 11. Soporte del Sistema Operativo 11.1. REQUERIMIENTOS DE LOS SISTEMAS OPERATIVOS. 11.1.1. MULTIPROGRAMACIÓN.

Tema 11. Soporte del Sistema Operativo 11.1. REQUERIMIENTOS DE LOS SISTEMAS OPERATIVOS. 11.1.1. MULTIPROGRAMACIÓN. Tema 11 Soporte del Sistema Operativo 11.1. REQUERIMIENTOS DE LOS SISTEMAS OPERATIVOS. El sistema operativo es básicamente un programa que controla los recursos del computador, proporciona servicios a

Más detalles

Un comité de la organización ANSI (American National Standards Institute) aborda la problemática del almacenamiento de datos para su procesamiento en

Un comité de la organización ANSI (American National Standards Institute) aborda la problemática del almacenamiento de datos para su procesamiento en 15/05/2012 1 Un comité de la organización ANSI (American National Standards Institute) aborda la problemática del almacenamiento de datos para su procesamiento en aplicaciones informáticas en 1975. 2 Como

Más detalles

COMPUTACIÓN DE ALTA PERFORMANCE

COMPUTACIÓN DE ALTA PERFORMANCE COMPUTACIÓN DE ALTA PERFORMANCE 2011 1 TOLERANCIA A FALLOS COMPUTACIÓN DE ALTA PERFORMANCE Curso 2011 Sergio Nesmachnow (sergion@fing.edu.uy) Santiago Iturriaga (siturria@fing.edu.uy) Gerardo Ares (gares@fing.edu.uy)

Más detalles

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática Tema 1 Introducción. Arquitectura básica y Sistemas Operativos Fundamentos de Informática Índice Descripción de un ordenador Concepto básico de Sistema Operativo Codificación de la información 2 1 Descripción

Más detalles

Petabytes de información: Repensando el modelamiento de base de datos. Ernesto Quiñones Azcárate ernestoq@apesol.org Presidencia Apesol 2006 2008

Petabytes de información: Repensando el modelamiento de base de datos. Ernesto Quiñones Azcárate ernestoq@apesol.org Presidencia Apesol 2006 2008 Petabytes de información: Repensando el modelamiento de base de datos Ernesto Quiñones Azcárate ernestoq@apesol.org Presidencia Apesol 2006 2008 Modelos de bases de datos para todos los gustos (según la

Más detalles

Módulo: Modelos de programación para Big Data

Módulo: Modelos de programación para Big Data Program. paralela/distribuida Módulo: Modelos de programación para Big Data (título original: Entornos de programación paralela basados en modelos/paradigmas) Fernando Pérez Costoya Introducción Big Data

Más detalles

Tema: Configuración de arreglos redundantes de discos duros (RAID).

Tema: Configuración de arreglos redundantes de discos duros (RAID). 1 Tema: Configuración de arreglos redundantes de discos duros (RAID). Objetivo general Configurar arreglos RAID en discos duros para obtener una mayor tolerancia a fallos, rendimiento y capacidad. Objetivos

Más detalles

Introducción a Computación

Introducción a Computación Curso: Modelización y simulación matemática de sistemas Metodología para su implementación computacional Introducción a Computación Esteban E. Mocskos (emocskos@dc.uba.ar) Facultades de Ciencias Exactas

Más detalles

Introducción a las bases de datos

Introducción a las bases de datos Introducción a las bases de datos Juan Ignacio Rodríguez de León Abstract Aplicaciones de los sistemas de bases de datos. Sistemas de bases de datos frente a sistemas de archivos. Visión de los datos.

Más detalles

CAPITULO 1. Introducción a los Conceptos Generales de Bases de Datos Distribuidas

CAPITULO 1. Introducción a los Conceptos Generales de Bases de Datos Distribuidas CAPITULO 1 Introducción a los Conceptos Generales de 1.1 Preliminares Las empresas necesitan almacenar información. La información puede ser de todo tipo. Cada elemento informativo es lo que se conoce

Más detalles

PATRONES. Experto. Solución:

PATRONES. Experto. Solución: PATRONES. Experto. Asignar una responsabilidad a la clase que tiene la información necesaria para cumplirla. Cuál es el principio fundamental en virtud del cual asignaremos las responsabilidades a los

Más detalles

Estructura de Bases de datos. Leonardo Víquez Acuña

Estructura de Bases de datos. Leonardo Víquez Acuña Estructura de Bases de datos Leonardo Víquez Acuña Lenguajes de Bases de Datos Un sistema de bases de datos proporciona Un lenguaje de definición de datos para especificar el esquema de la base de datos

Más detalles

Intel Tera-Scale Computing Alumno: Roberto Rodriguez Alcala

Intel Tera-Scale Computing Alumno: Roberto Rodriguez Alcala Intel Tera-Scale Computing Alumno: Roberto Rodriguez Alcala 1. Introducción Los procesadores con dos núcleos existen actualmente, y los procesadores de cuatro están insertándose en el mercado lentamente,

Más detalles

En el siguiente apartado se detallan ciertos conceptos que ayudan a comprender en mayor medida el Proyecto.

En el siguiente apartado se detallan ciertos conceptos que ayudan a comprender en mayor medida el Proyecto. APÉNDICES En el siguiente apartado se detallan ciertos conceptos que ayudan a comprender en mayor medida el Proyecto. APÉNDICE 1. Herramientas Las herramientas que se usaron en el análisis, desarrollo

Más detalles

Modelo de aplicaciones CUDA

Modelo de aplicaciones CUDA Modelo de aplicaciones CUDA Utilización de GPGPUs: las placas gráficas se utilizan en el contexto de una CPU: host (CPU) + uno o varios device o GPUs Procesadores masivamente paralelos equipados con muchas

Más detalles

CURSO: APACHE SPARK CAPÍTULO 2: INTRODUCCIÓN A APACHE SPARK. www.formacionhadoop.com

CURSO: APACHE SPARK CAPÍTULO 2: INTRODUCCIÓN A APACHE SPARK. www.formacionhadoop.com CURSO: APACHE SPARK CAPÍTULO 2: INTRODUCCIÓN A APACHE SPARK www.formacionhadoop.com Índice 1 Qué es Big Data? 2 Problemas con los sistemas tradicionales 3 Qué es Spark? 3.1 Procesamiento de datos distribuido

Más detalles

Básico de Arquitectura del Computador. Ing. Irvin Cuervo

Básico de Arquitectura del Computador. Ing. Irvin Cuervo Básico de Arquitectura del Computador El Computador Hardware Software El Computador Qué es y qué hace un computador? Un computador es básicamente una máquina cuya función principal es procesar información.

Más detalles

Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería en Ingeniería Química Curso 2010/2011

Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería en Ingeniería Química Curso 2010/2011 Módulo 1. Fundamentos de Computadores Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería en Ingeniería Química Curso 2010/2011 1 CONTENIDO Tema 1. Introducción

Más detalles

Ventajas del almacenamiento de datos de nube

Ventajas del almacenamiento de datos de nube Ventajas del almacenamiento de datos de nube Almacenar grandes volúmenes de información en una red de área local (LAN) es caro. Dispositivos de almacenamiento electrónico de datos de alta capacidad como

Más detalles

CURSOS DE VERANO 2014

CURSOS DE VERANO 2014 CURSOS DE VERANO 2014 CLOUD COMPUTING: LA INFORMÁTICA COMO SERVICIO EN INTERNET LA PLATAFORMA GOOGLE CLOUD PLATFORM. GOOGLE APP ENGINE Pedro A. Castillo Valdivieso Universidad de Granada http://bit.ly/unia2014

Más detalles

TIPOS DE SISTEMAS OPERATIVOS

TIPOS DE SISTEMAS OPERATIVOS TIPOS DE SISTEMAS OPERATIVOS En esta sección se describirán las características que clasifican a los sistemas operativos, básicamente se cubrirán tres clasificaciones: sistemas operativos por su estructura

Más detalles

serra Access y SQL Server Qué es mejor en cada caso? Valentín Playá, Serra GTS 22 de enero de 2009 Bases de datos 1

serra Access y SQL Server Qué es mejor en cada caso? Valentín Playá, Serra GTS 22 de enero de 2009 Bases de datos 1 Access y SQL Server Qué es mejor en cada caso? Valentín Playá, Serra GTS 22 de enero de 2009 Bases de datos 1 Bases de datos en una organización Distintas necesidades según el tipo de solución Ninguna

Más detalles

Capítulo 4 Análisis y Resultados

Capítulo 4 Análisis y Resultados 58 Capítulo 4 Análisis y Resultados Al terminar la aplicación desarrollada con Django se han cumplido los objetivos planteados al principio de la propuesta. Los objetivos fueron planteados para cumplir

Más detalles

Desarrollo de un cluster computacional para la compilación de. algoritmos en paralelo en el Observatorio Astronómico.

Desarrollo de un cluster computacional para la compilación de. algoritmos en paralelo en el Observatorio Astronómico. Desarrollo de un cluster computacional para la compilación de algoritmos en paralelo en el Observatorio Astronómico. John Jairo Parra Pérez Resumen Este artículo muestra cómo funciona la supercomputación

Más detalles

Aranda 360 ENDPOINT SECURITY

Aranda 360 ENDPOINT SECURITY Tabla de contenido Product Architecture Product Architecture Introducción Ambiente Redesdetrabajo Configuraciones Políticas Servidores Componentes Agente Servidor Base de datos Consola Comunicación Consola

Más detalles

ADMINISTRACIÓN CENTRALIZADA DELL POWERVAULT DL2000 CON TECNOLOGÍA SYMANTEC

ADMINISTRACIÓN CENTRALIZADA DELL POWERVAULT DL2000 CON TECNOLOGÍA SYMANTEC ADMINISTRACIÓN CENTRALIZADA DELL POWERVAULT DL2000 CON TECNOLOGÍA SYMANTEC RESUMEN EJECUTIVO Es un método ideal para que cualquier departamento de TI logre realizar respaldos y restauraciones más rápidas

Más detalles

Qué significa Hadoop en el mundo del Big Data?

Qué significa Hadoop en el mundo del Big Data? Qué significa Hadoop en el mundo del Big Data? Un contenido para perfiles técnicos 2 ÍNDICE Qué significa Hadoop en el Universo Big Data?.... 3 El planteamiento: big data y data science.... 3 Los desafíos

Más detalles

La Capa de Red. Dr. Ivan Olmos 1

La Capa de Red. Dr. Ivan Olmos 1 La Capa de Red Dr. Ivan Olmos 1 La Capa de Red Orientada a llevar los paquetes desde el origen hasta el destino Aquí, se debe conocer perfectamente el esquema de la subred para escoger la mejor ruta Además,

Más detalles

GENERALIDADES DE LA COMUNICACIÓN DE DATOS

GENERALIDADES DE LA COMUNICACIÓN DE DATOS Comunicaciones I Capítulo 1 GENERALIDADES DE LA COMUNICACIÓN DE DATOS 1 El Sistema de Comunicación Sistema de comunicación: Lleva a cabo el intercambio de información entre dos entes ubicados en los extremos

Más detalles

CAPÍTULO 1 Instrumentación Virtual

CAPÍTULO 1 Instrumentación Virtual CAPÍTULO 1 Instrumentación Virtual 1.1 Qué es Instrumentación Virtual? En las últimas décadas se han incrementado de manera considerable las aplicaciones que corren a través de redes debido al surgimiento

Más detalles

Introducción a Bases de Datos

Introducción a Bases de Datos de a M. -Tastets Universidad de Concepción,Chile www.inf.udec.cl\ andrea andrea@udec.cl II Semestre - 2007 y del s: Sistemas de y del s: de y del s: Objetivos de la Unidad Dar a conocer las características,

Más detalles

LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN

LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN Tabla de Contenidos LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN... 1 Tabla de Contenidos... 1 General... 2 Uso de los Lineamientos Estándares...

Más detalles

PARTICIONES Y FORMATOS

PARTICIONES Y FORMATOS PARTICIONES Y FORMATOS 1. Función de un disco duro Un disco duro es un dispositivo que permite el almacenamiento y recuperación de grandes cantidades de información. Los discos duros forman el principal

Más detalles

CAPÍTULO 3. Bases de datos distribuidas

CAPÍTULO 3. Bases de datos distribuidas CAPÍTULO 3 Bases de datos distribuidas La cantidad de innovaciones tecnológicas que se ha dado en las últimas décadas ha promovido cambios en la forma de observar los sistemas de información y, en general,

Más detalles

Yersinio Jiménez Campos Analista de datos Banco Nacional de Costa Rica

Yersinio Jiménez Campos Analista de datos Banco Nacional de Costa Rica Fundamentos Título de de Big la Data presentación utilizando MATLAB Yersinio Jiménez Campos Analista de datos Banco Nacional de Costa Rica 1 Agenda Qué es Big Data? Buenas prácticas en el manejo de memoria.

Más detalles

Capítulo 12: Indexación y asociación

Capítulo 12: Indexación y asociación Capítulo 12: Indexación y asociación Conceptos básicos Índices ordenados Archivos de índice de árbol B+ Archivos de índice de árbol B Asociación estática Asociación dinámica Comparación entre indexación

Más detalles

Escogiendo un sistema host

Escogiendo un sistema host 2002 Emerson Process Management. Todos los derechos reservados. Vea este y otros cursos en línea en www.plantwebuniversity.com. Fieldbus 402 Escogiendo un sistema host Generalidades Experiencia del proveedor

Más detalles

SESIÓN 8 TIPOS DE SISTEMAS DE MANUFACTURA

SESIÓN 8 TIPOS DE SISTEMAS DE MANUFACTURA SESIÓN 8 TIPOS DE SISTEMAS DE MANUFACTURA CONTENIDO Términos en manufactura Clasificación de sistemas de manufactura Beneficios y ejemplos de sistemas de manufactura Los componentes de un sistema de manufactura

Más detalles

Apéndice A Herramientas utilizadas

Apéndice A Herramientas utilizadas Apéndice A Herramientas utilizadas A.1 Java Media Framework El Java Media Framework (JMF) es una interfaz para el desarrollo de aplicaciones (API) e incorpora el manejo de audio y video en el lenguaje

Más detalles

VISIÓN GENERAL HERRAMIENTAS COMERCIALES

VISIÓN GENERAL HERRAMIENTAS COMERCIALES VISIÓN GENERAL El servidor de MS SQL se ha convertido en un estándar en muchas partes de la América corporativa. Puede manejar volúmenes de datos grandes y se integra bien con otros productos de Microsoft.

Más detalles

ELEMENTO I INTRODUCCION A LOS SISTEMAS DE BASES DE DATOS

ELEMENTO I INTRODUCCION A LOS SISTEMAS DE BASES DE DATOS Base de Datos ELEMENTO I INTRODUCCION A LOS SISTEMAS DE BASES DE DATOS Una base de datos es un conjunto de elementos de datos que se describe a sí mismo, con relaciones entre esos elementos, que presenta

Más detalles

Unidad didáctica 2: Metodologías de desarrollo de Bases de Datos. Unidad didáctica 1: Fase de análisis de requisitos Modelo E/R

Unidad didáctica 2: Metodologías de desarrollo de Bases de Datos. Unidad didáctica 1: Fase de análisis de requisitos Modelo E/R índice Módulo A Unidad didáctica 1: Introducción a las Bases de Datos Unidad didáctica 2: Metodologías de desarrollo de Bases de Datos 3 19 Módulo B Unidad didáctica 1: Fase de análisis de requisitos Modelo

Más detalles

Convivencia. Gestión del Sistema de Entrada/Salida

Convivencia. Gestión del Sistema de Entrada/Salida Convivencia Gestión del Sistema de Entrada/Salida Dra. Carolina Carolina Mañoso Mañoso Dpto. Dpto. Imformática Informática y y Automática.UNED Introducción (1/2) El sistema de Entrada/Salida es la parte

Más detalles

Una red es un conjunto de computadoras interconectadas entre sí con el. propósito de compartir archivos y periféricos Completando esta definición

Una red es un conjunto de computadoras interconectadas entre sí con el. propósito de compartir archivos y periféricos Completando esta definición REDES RED Una red es un conjunto de computadoras interconectadas entre sí con el propósito de compartir archivos y periféricos Completando esta definición podemos añadir que una red es un sistema de comunicaciones

Más detalles

Arquitectura de sistema de alta disponibilidad

Arquitectura de sistema de alta disponibilidad Mysql Introducción MySQL Cluster esta diseñado para tener una arquitectura distribuida de nodos sin punto único de fallo. MySQL Cluster consiste en 3 tipos de nodos: 1. Nodos de almacenamiento, son los

Más detalles

Sistemas de Operación II

Sistemas de Operación II Sistemas de Operación II Procesos en Sistemas Distribuidos Prof. Carlos Figueira Basado en material de Yudith Cardinale, Mariela Curiel (USB) Andrew Tanembaum y Marteen van Steen Contenido Clientes Servidores

Más detalles

13º Unidad Didáctica. RAID (Redundant Array of Independent Disks) Eduard Lara

13º Unidad Didáctica. RAID (Redundant Array of Independent Disks) Eduard Lara 13º Unidad Didáctica RAID (Redundant Array of Independent Disks) Eduard Lara 1 RAID: INTRODUCCIÓN Sistema de almacenamiento que usa múltiples discos duros entre los que distribuye o replica los datos.

Más detalles

Unidad I Fundamentos de Sistemas Distribuidos. M.C. Juan Carlos Olivares Rojas

Unidad I Fundamentos de Sistemas Distribuidos. M.C. Juan Carlos Olivares Rojas Unidad I Fundamentos de Sistemas Distribuidos M.C. Juan Carlos Olivares Rojas Temario 1.1. Características de un sistema distribuido 1.2. Objetivos de los sistemas distribuidos 1.3. Ventajas y desventajas

Más detalles

Capítulo 2. Marco Teórico

Capítulo 2. Marco Teórico Capítulo 2. Marco Teórico 2.1. Frameworks para Aplicaciones Web en Java Con el crecimiento exponencial de Internet en los últimos años, las aplicaciones Web se han convertido en una parte básica y común

Más detalles

Vicente Toledo Israel Miralles. Base de Datos Distribuidas

Vicente Toledo Israel Miralles. Base de Datos Distribuidas Bases de Datos Distribuidas Vicente Toledo Israel Miralles Pg-1 Indice 1. - Que son Bases de Datos Distribuidas? Pg-3 1. -Comparación Pg-3 2. -Arquitectura de las Bases de Datos Pg-4 1. -Ejemplo de una

Más detalles

Redes de Almacenamiento

Redes de Almacenamiento Redes de Almacenamiento Las redes de respaldo o backend se utilizan para interconectar grandes sistemas tales como computadores centrales y dispositivos de almacenamiento masivo, el requisito principal

Más detalles