Publicidad
Publicidad

Más contenido relacionado

Publicidad

mapreduce.pptx

  1. INTRODUCCION En la actualidad se han implementado cientos de cálculos que procesan grandes cantidades de datos, a pesar de que la mayoría de estos cálculos son conceptualmente sencillos. Sin embargo, los datos de entrada suelen ser grandes y los cálculos deben distribuirse entre cientos o miles de máquinas para finalizar en un tiempo razonable, el cual genera varias líneas de código complejo. La abstracción presentada está inspirada en el mapa y reducir primitivas presentes en Lisp y muchos otros lenguajes funcionales, para los cálculos se aplicaba un mapa de operación a cada "registro“ lógico en nuestra entrada para calcular un conjunto de pares clave, y luego aplicar un reducir operación a todos los valores que compartían la misma clave.
  2. Las principales contribuciones de este trabajo son una interfaz simple y poderosa que permite la paralelización y distribución automáticas de cálculos a gran escala, que tiene un alto rendimiento en grandes grupos de PC comerciales.
  3. Modelo de programación El usuario de la biblioteca de MapReduce expresa el calculo como dos funciones: Mapa y Reducir. Mapa, escrito por el usuario, toma un par de entrada y produce un conjunto de intermedio pares clave/valor, agrupados para pasar a la función reducir. La función Reducir, también escrita por el usuario, acepta una clave intermedia y un conjunto de valores para esa clave, fusiona estos valores para formar un conjunto de valores pequeños. Esto nos permite manejar listas de valores que son demasiado grandes para caber en la memoria.
  4. Ejemplo: Considere el problema de contar el número de ocurrencias de cada palabra en una gran colección de documentos. El usuario escribiría un código similar al siguiente pseudocódigo: map(String key, String value): // key: document name // value: document contents for each word w in value: EmitIntermediate(w, "1"); reduce(String key, Iterator values): // key: a word // values: a list of counts int result = 0; for each v in values: result += ParseInt(v); Emit(AsString(result));
  5. El mapa emite cada palabra más un conteo asociado de ocurrencias (solo '1' en este ejemplo simple). El reducir la función suma todos los recuentos emitidos para una palabra en particular. Además, el usuario escribe código para completar en un mapreduce los nombres de la entrada, salida y parámetros de ajuste opcionales. Tipos Aunque el pseudocódigo anterior está escrito en términos de entradas y salidas de cadenas, conceptualmente, las funciones map y reduce proporcionadas por el usuario tienen tipos asociados: Mapa (k1,v1) → lista (k2, v2) Reducir (k2, lista (v2)) → lista (v2) Es decir, las claves y valores de entrada se extraen de un dominio diferente al de las claves y valores de salida. Además, las claves y los valores intermedios son del mismo dominio que las claves y los valores de salida.
  6. Más ejemplos: Aquí hay algunos ejemplos simples de programas interesantes que pueden expresarse fácilmente como cálculos de MapReduce: Grep distribuido: La función mapa emite una línea si coincide con un patrón proporcionado. La función de reducción copia los datos intermedios suministrados en la salida. Recuento de frecuencia de acceso a URL: La función de mapa procesa registros de solicitudes y salidas de páginas web. La función reduce suma todos los valores para la misma URL y emite un 〈URL, recuento total〉. Gráfico de enlace web inverso: Las salidas de la función de mapa 〈objetivo, fuente〉 pares para cada enlace a un objetivo URL para la página llamada fuente. La función de reducción concatena la lista de todas las URL de origen asociadas con una URL de destino dada y emite el par: 〈objetivo,lista(fuente)〉
  7. Término-Vector por Host: Un vector de términos resume las palabras más importantes de un documento como una lista de 〈palabra, frecuencia〉 pares. La función mapa emite un 〈nombre de host, vector de término〉 par para cada documento de entrada. La función reduce suma todos los vectores desechando los términos poco frecuentes y luego emite un último 〈nombre de host, vector de término〉 par. Índice invertido: La función mapa analiza cada documento y emite una secuencia de 〈palabra, identificación del documento〉 pares y la función reduce acepta todos los pares de una palabra determinada, ordena los ID de documentos correspondientes y emite <palabra, lista(identificación del documento)> par. Clasificación distribuida: La función mapa extrae la clave de cada registro y emite una 〈clave, registro〉 par. La función reduce emite todos los pares sin cambios.
  8. Implementación Son posibles muchas implementaciones diferentes de la interfaz MapReduce. La elección correcta depende del entorno de trabajo: 1. Las máquinas suelen ser procesadores x86 de doble procesador que ejecutan Linux, con 2-4 GB de memoria por máquina. 2. Se utiliza hardware de red básico, normalmente 100 megabits/segundo o 1 gigabit/segundo a nivel de máquina. 3. Un clúster consta de cientos o miles de máquinas, que pueden presentar fallas comunes. 4. El almacenamiento lo proporcionan discos IDE económicos conectados directamente a las máquinas individuales que utilizan un sistema de archivos distribuido para administrar los datos. 5. Los usuarios envían trabajos a un sistema de programación. Cada trabajo consta de un conjunto de tareas y el planificador lo asigna a un conjunto de máquinas disponibles dentro de un clúster.
  9. Descripción general de la ejecución Las invocaciones de mapas se distribuyen en múltiples máquinas mediante la partición automática de los datos de entrada en un conjunto de divisiones. Las divisiones de entrada se pueden procesar en paralelo por diferentes máquinas. Reducir las invocaciones se distribuyen particionando la clave intermedia espacio en R piezas utilizando una función de partición, especificada por el usuario. Cuando el programa de usuario llama a la función MapReduce ocurre la siguiente secuencia de acciones que se muestra en la figura:
  10. 1. La biblioteca MapReduce en el programa de usuario primero divide los archivos de entrada en M piezas de 16 megabytes a 64 megabytes (MB) por pieza, luego realiza copias del programa en un grupo de máquinas. 2. Una de las copias del programa es especial: el maestro. El resto son trabajadores a los que el maestro les asigna a cada uno una tarea de mapa o de reducción. 3. Un trabajador al que se le asigna la tarea de mapa lee el contenido de la división de entrada, analiza los pares clave/valor de los datos y pasa cada par a la clave definida por el usuario, que se almacenan en memoria. 4. Periódicamente, los pares almacenados en búfer se escriben en el disco local, se dividen en R regiones por la función de Partición, se devuelven al maestro quien reenvía estas ubicaciones a los trabajadores de reducción.
  11. 5. Cuando el maestro notifica a un trabajador de reducción sobre estas ubicaciones, utiliza procedimientos remotos para leer los datos almacenados, después los ordena por las claves intermedias para que se agrupen. Si la cantidad de datos intermedios es demasiado grande para caber en la memoria, se utiliza una ordenación externa. 6. El trabajador de reducción itera sobre los datos intermedios ordenados y para cada clave intermedia única, pasa la clave y el conjunto de valores intermedios al usuario Reducir función. 7. Cuando se hayan completado todas las tareas de asignación y reducción, el maestro activa el programa de usuario, el cual vuelve al código de usuario.
  12. Estructuras de datos maestros El maestro es el conducto a través del cual se propaga la ubicación de las regiones de archivos Intermedios desde las tareas de mapa a reducción, para las tareas de mapa Completadas almacena las ubicaciones y tamaño de las R regiones de archivos intermedios se Actualiza la ubicación después de cada tarea que se envía a reducción. Tolerancia a fallas Dado que la biblioteca de MapReduce usara cientos o miles de máquinas, también debe tolerar las fallas sin problemas. Fallo del trabajador El maestro hace ping a cada trabajador periódicamente, si no recibe respuesta después de cierto Tiempo se considera como fallido. Después de que el trabajador complete una tarea de mapa o se encuentre en progreso de la tarea si este es atendido por un trabajador fallido, vuelve a su estado inicial inactivo. Las tareas de mapas completadas se vuelven a ejecutar en caso de falla porque su salida se almacena en los discos locales de la máquina fallida. Si se atiende una tarea con mas de 2 trabajadores se notifican a los demás trabajadores para evaluar si se presentan fallas
  13. Indicar su importancia y uso en el ambiente de “Cloud Computing” Por lo general, las empresas prefieren ejecutar los clúster de mapreduce en recursos de nubes públicas, privadas o híbridas antes que en hardware porque no solo se benefician de más flexibilidad y disponibilidad. Cuestionario: 1. ¿Cuáles son los principales competidores de MapReduce y cuáles son sus ventajas y desventajas? R. Entres sus competidores tenemos a mongoDB, apache spark, apache storm, lenguaje R, Python. Las ventajas son: Fácil de programar, Escalabilidad, Alta tolerancia a fallas y Alto rendimiento. En cambio las desventajas son: No es adecuado para el cálculo en tiempo real, para la informática en streaming, para el cálculo de DAG (gráfico dirigido): 2. ¿Cuál es el comportamiento de MapReduce cuando se necesita procesamiento en tiempo real? R. MapReduce puede no ser la opción más rápida para procesamiento en tiempo real ya que al realizar procesos paralelos se tiene mayor retardo en el mismo cambio de función.
  14. 3. ¿Siempre es posible implementar una secuencia de funciones Map y Reduce para todas las aplicaciones? R. No siempre es muy fácil implementar todos y cada uno de los elementos en una secuencia de funciones Map y Reduce en todos los casos aunque se tiene una alta tolerancia a fallas. 4. ¿Qué sucedió cuando los procesos intermedios necesitan comunicarse entre sí debido a que los trabajos Map y Reduce se ejecutan de forma aislada? R. Los procesos intermedios se ordenan para que los pares clave-valor sean contiguos (fase de ordenación, sort fase), Si se ejecuta el modo distribuido estos necesitan ser primero copiados al filesystem local en la fase de copia. Una vez que todos los datos están disponibles a nivel local se adjuntan a una fase de adición, el archivo se fusiona (merge) de forma ordenado.
  15. 5. ¿Cuál es la diferencia para configurar y administrar un sistema independiente en comparación con un sistema distribuido? R. En un sistema distribuido se tienen Datos compartidos: Permite que distintos usuarios tengan acceso a una base de datos. Dispositivos compartidos: Permite compartir un recurso costoso entre distintos usuarios, como plotters o impresoras láser. Comunicación: Brinda la posibilidad de comunicación de usuario a usuario Confiabilidad: Facilita la repartición de la carga de trabajo entre las distintas computadoras con base en su funciones y capacidades, brindando una mayor flexibilidad y confiabilidad al sistema.
Publicidad