MapReduce
MapReduce ha sido adoptado mundialmente, ya que existe una implementación OpenSource denominada Hadoop.Su desarrollo fue liderado inicialmente por Yahoo y actualmente lo realiza el proyecto Apache.Desde la década de los años 2010 existen diversas iniciativas similares a Hadoop tanto en la industria como en el ámbito académico.Si un nodo de trabajo falla durante el procesamiento, los datos se replican y se asignan a otros nodos disponibles para garantizar la continuidad del procesamiento.Aunque este proceso parece a menudo ineficiente en comparación con los algoritmos que son más secuenciales (porque deben ejecutarse múltiples instancias del proceso de reducción), MapReduce puede aplicarse a conjuntos de datos significativamente mayores de los que puede manejar un único servidor "básico".No todos los procesos pueden ser abordados desde el framework MapReduce.Las funciones Map y Reduce están definidas ambas con respecto a datos estructurados en tuplas del tipo (clave, valor).En una invocación de MapReduce suelen ocurrir varias operaciones: Se considera que ha habido un final de las tareas cuando este control se ha devuelto al usuario.En el framework MapReduce la función map() escribe en una memoria intermedia de carácter local, como puede ser un disco duro.El "master" periódicamente hace ping a cada worker para comprobar su estatus.Si no existe respuesta tras un cierto instante de espera, el master interpreta que el worker está desactivado.Cualquier tarea map() que ha sido completa por el worker regresa de inmediato a su estado de espera, y por lo tanto puede resultar elegible para su asignación en otros workers.De forma similar, cualquier función map() (o reduce) que se encuentre en progreso durante el fallo, se resetea a estado de reposo pudiendo ser elegida para su nueva re-asignación.Supongamos que tenemos una matriz cuadrada M de tamaño nxn.Al elemento ubicado en la fila i y columna j le denominamos mij.Los módulos principales que la aplicación define son: El lector de entrada divide la entrada en 'divisiones' de tamaño apropiado (típicamente entre 64 MB a 128 MB) y el framework asigna una división a cada función Map.Entre las etapas de mapeo y reducción los datos son barajados (ordenados paralelamente / intercambiados entre nodos) en orden de mover los datos desde el fragmento donde fueron producidos hacia el fragmento en el que serán reducidos.La Reducción puede iterar entre los valores que están asociados con esa llave y producir cero o más salidas.Por regla general se emplea MapReduce en aquellos problemas de Computación concurrente entre los que se encuentran involucrados grandes datasets que deben ser procesandos por una gran cantidad de computadoras (nodos), a los que se refiere de forma colectiva como clusteres (si todos los nodos se encuentran en la misma red de área local y empleando el mismo hardware), o a grids (si los nodos se comparten de forma distribuida a lo largo de extensas zonas geográficas o administrativas, y que generalmente poseen un hardware más heterogéneo).[5] Es por esta razón por la que se emplea en aplicaciones que poseen datos a gran escala, tales como aplicaciones paralelas, indexación web, data mining, y simulación científica.Industrias como el e-Commerce, involucrando a Walmart y Amazon, estas empresas usan la capacidad de MapReduce para analizar el comportamiento de los usuarios con base en sus compras, para posteriormente darle al usuario recomendaciones relacionadas con compras anteriores.Redes sociales, como Facebook y Twitter usan MapReduce, reuniendo información para indicar, por ejemplo, cuantos usuarios han usado nuestro perfil, así como tener un contador con ‘likes’ de las publicaciones.