¿Qué es una explicación intuitiva de MapReduce?

Hace mucho, mucho tiempo, en una galaxia muy, muy lejana, vivía un joven y enérgico comandante espacial llamado Sheriff Sequential . Aunque gobernó el pequeño planeta de Pentium Single-Core 1.3ghz, albergaba la ambición de gobernar todos los planetas de la placa base , su sistema solar. Lamentablemente, su inclinación a ser un ejército de un solo hombre y realizar todas las tareas paso a paso le impedía alcanzar su sueño. Era imposible para él defender personalmente más de un planeta a la vez.

Descargo de responsabilidad : esta respuesta está dirigida a personas con experiencia en CS que luchan con los conceptos de MapReduce, es decir, aquellos que pueden reírse al ver la terminología de sistemas operativos comunes que se utiliza en un contexto de cuento de hadas. Para una breve y excelente introducción de MapReduce dirigida a todos, consulte la otra respuesta: la respuesta de Gautam Singaraju a las explicaciones intuitivas: ¿Cuál es una explicación intuitiva de MapReduce?


Pero los soñadores de la época son hombres peligrosos, y también lo fue nuestro Sheriff, cuando se propuso convertir sus sueños en realidad. Tomó un descanso de sus deberes del sheriff y se inscribió en un curso de posgrado sobre estrategias militares para la guerra multinúcleo . En consecuencia, sus ojos se abrieron a un nivel completamente diferente del juego. Engendró un pequeño ejército de hilos de guerrero y entrenó a cada uno de ellos para realizar todas las tareas necesarias para capturar y gobernar un planeta. Cada Hilo fue enviado a conquistar un planeta diferente, y el Sheriff se echó a reír de alegría al recibir mensajes de sus Hilos en busca de los pobres procesos del sheriff local en cada planeta. Comenzó a llamarse Comandante Concurrente .

Pero si algunas cosas tienen un límite superior, la ambición no es una de ellas. El Comandante Concurrente ahora fijó su vista en gobernar toda la galaxia, llamada Big Data . Sin embargo, este era un juego de núcleos completamente diferente. Dado que los otros planetas en la galaxia estaban tan lejos el uno del otro, sus Hilos no podían esperar compartir recursos entre ellos durante sus misiones de ataque. Además, muchos de los planetas albergaban formas extrañas de datos que eran en gran parte desconocidos, desestructurados e indómitos. Sabía que todos los planetas habían formado pequeños grupos para proteger sus datos, y lucharon bajo la misma Clave , pero era imposible saber de antemano qué planeta estaba asociado con cada Clave.

Muchos antiguos aconsejaron a nuestro Comandante que construyera un gran ejército de Procesos Especializados que pudieran operar independientemente en su porción asignada de datos, analizar su Clave y calcular los resultados deseados para la victoria. Pero nuestro Comandante tenía la intuición de que un ejército así sería demasiado costoso de construir, y sería imposible generalizarlo a futuras guerras. Además, cada proceso puede no ser capaz de procesar completamente los Datos de su planeta de forma aislada, y puede requerir la colaboración con otros procesos cercanos para vencer a los planetas que lucharon bajo la misma Clave. En cuyo caso, la comunicación entre procesos llevaría mucho tiempo.

En cambio, el Comandante se embarcó en una peregrinación al planeta sagrado de Mountain View , donde buscó respuestas de los sabios Dean y Ghemawat . No estaba decepcionado. Iluminado, regresó a su planeta de origen y se dispuso a formar un ejército de dos tipos de soldados: mapeadores , que visitarían un planeta y analizarían todas las formas de datos presentes allí para exponer su clave, y reductores , cada uno de los cuales azotaría los Datos que dejaron múltiples Mappers, y proporcionan un solo golpe mortal para asegurar la victoria sobre todos los planetas que luchan bajo la misma Clave. Al dividir el trabajo en dos pasos, cada Mapper pudo procesar rápidamente una sola porción de Datos y pasar al siguiente planeta, sin tener que colaborar con otros Mappers. Un reductor vendría más tarde y terminaría el trabajo al terminar todos los planetas que poseían datos de la misma clave. Todo el tiempo, el Comandante dirigiría a todo su ejército desde la comodidad de su planeta de origen. Era una idea poderosa, cuyo momento había llegado.

La guerra estaba en marcha. A medida que su ejército de Mapeadores y Reductores devastó sistemáticamente todos los Big Data, nuestro Comandante renombró a sí mismo, Mayor MapReduce . La guerra terminó pronto y el comandante presidió una reunión general de su ejército. Compartieron historias de lo geniales que eran para construir un ejército de tan bajo costo basado en una idea poderosa y derrotaron a los ejércitos que estaban construyendo cosas súper avanzadas que no escalarían tanto.

Alguien le preguntó a nuestro Mayor, “¿Qué sigue?”. Él se rió entre dientes y miró hacia la Nube .

Permítanme comenzar estableciendo el contexto: ¿quién es un Damba de Mumbai? “Dabba” significa literalmente una caja y un Dabbawala es una persona que lleva la caja. Todos los días, miles de Mumbaikars (una jerga que se refiere a los residentes de Mumbai, la capital financiera de la India) confían en los Dabbawalas para entregar sus loncheras llevando la comida casera a sus lugares de trabajo. Dado el aumento del costo de vida en la India y el reacios a tener comida chatarra para la comida diaria, muchos hogares dependen de la red de Dabbawalas. Mumbai es una de las ciudades más grandes del mundo y un profesional que trabaja en promedio tendrá que salir de casa bastante temprano para tomar el tren local para viajar. al trabajo. Los alimentos envasados ​​que se llevan de casa perderán su frescura al mediodía. Mumbai Dabbawalas recoge la lonchera mucho más tarde y logra entregarla justo a tiempo para el almuerzo, preservando el calor de la comida casera. Todo el proceso se repite en la noche cuando recogen las cajas vacías para dejarlas en los hogares respectivos. Entonces, ¿qué tiene de especial y cómo se relaciona esto con Apache Hadoop? ¡Sigue leyendo!
Si bien la premisa de recoger las loncheras y entregarlas en los lugares de trabajo parece simple, existe un proceso altamente sofisticado y de más de un siglo que funciona silenciosamente detrás de escena. La eficiencia del proceso le ha valido a Dabbawalas una calificación de seis sigma de la revista Forbes. La certificación de calidad Six Sigma fue establecida por la Federación Internacional de Calidad en 1986, para juzgar los estándares de calidad de una organización. Hay más de 5000 Dabbawalas que entregan más de 300,000 cajas de almuerzo todos los días que cubren todos los rincones de Mumbai. Enfrentando condiciones climáticas extremas, lo cual es común durante la temporada del monzón en Mumbai, los Dabbawalas logran entregar las cajas a tiempo todos los días hábiles. Las Dabbawalas locales en los extremos de recepción y envío son conocidas personalmente por los clientes, por lo que no hay duda de falta de confianza. Además, están bien acostumbrados a las áreas locales a las que atienden, lo que les permite acceder a cualquier destino con facilidad. Dependen de bicicletas, vagones y trenes locales para transportar las loncheras durante el viaje de ida y vuelta. En promedio, cada lonchera cambia de manos cuatro veces y recorre 60-70 kilómetros en su viaje para llegar a su destino final. Cada caja se diferencia y clasifica a lo largo de la ruta en función de las marcas en la tapa, que dan una indicación de la fuente y la dirección de destino. Aquí hay un resumen rápido de los pasos que se llevan a cabo desde el momento en que se recoge la lonchera en la casa y se devuelve por la noche.

  • El primer Dabbawala recoge la lonchera de la casa y la marca con un código único.
  • Cada Dabbawala se reúne en un lugar designado donde las cajas se clasifican y agrupan en un carro
  • El segundo Dabbawala marca el vagón únicamente para representar el destino y lo coloca en un tren local. Las marcas incluyen la estación de ferrocarril local para descargar las cajas y la dirección del edificio donde finalmente debe entregarse la caja.
  • El tercero viaja junto con los dabbas en el tren local para entregar los vagones en cada estación.
  • El cuarto Dabbawala recoge los dabbas del tren, decodifica el destino final y lo entrega.

El proceso se invierte por la noche para devolver las loncheras vacías.
Si está familiarizado con MapReduce, esto ya debería sonar una campana. ¡Casi un siglo antes de que Google publicara los documentos GFS y Google MapReduce, Mumbai Dabbawalas dominaba el algoritmo de MapReduce para su propio procesamiento distribuido eficiente! Para los no iniciados, Apache Hadoop es un marco para procesar grandes cantidades de datos en un entorno altamente paralelo y distribuido. Resuelve el problema del procesamiento de petabytes de datos al dividir el conjunto de datos en fragmentos individuales que pueden ser procesados ​​individualmente por máquinas económicas en un grupo. Apache Hadoop tiene dos componentes: 1) un sistema de archivos llamado HDFS que está diseñado para manejar los datos distribuidos de una manera altamente confiable y 2) el motor MapReduce que procesa cada segmento de los datos mediante la aplicación del algoritmo. Por ejemplo, el departamento de meteorología de la India habría registrado las temperaturas de cada ciudad diariamente durante los últimos 100 años. Sin lugar a dudas, este conjunto de datos se encontraría con unos pocos terabytes. Imagine la potencia informática que se requiere para consultar este conjunto de datos para encontrar la ciudad con la temperatura más alta en los últimos 100 años. ¡Aquí es exactamente donde Hadoop puede jugar un papel! Una vez que el conjunto de datos de tamaño Terabyte se envía a HDFS, se dividirá el conjunto de datos en fragmentos iguales y distribuirá cada fragmento a una máquina que se ejecute dentro del clúster. Luego, el desarrollador necesitaría escribir el código en dos partes: 1) El código que encuentra la temperatura máxima por cada segmento de conjunto de datos que se ejecuta en cada máquina (Mapper) y, 2) el código que puede recopilar y agregar la salida del paso anterior para encontrar la ciudad con temperatura máxima (Reductor). MapReduce es precisamente el algoritmo que ayuda a los desarrolladores a realizar estos dos pasos de manera eficiente. Si el desarrollador escribe el código de MapReduce para encontrar la ciudad con la temperatura máxima en un pequeño conjunto de datos con solo unos pocos registros, ¡ese mismo código funcionará perfectamente contra Petabytes de datos! Efectivamente, Apache Hadoop facilita el procesamiento de grandes conjuntos de datos al permitir que los desarrolladores se centren en la lógica central en lugar de preocuparse por la complejidad y el tamaño de los datos. Entre las fases de Mapa y Reducción, hay subprocesos para mezclar y clasificar los datos para facilitar que los reductores agreguen los resultados. A continuación se muestra una ilustración del proceso de MapReduce.
Ahora que hemos explorado ambos modelos, comparemos y contrastemos la metodología Mumbai Dabbawala con Apace Hadoop.

  • Al igual que HDFS corta y distribuye la porción de datos a nodos individuales, cada hogar envía la lonchera a un Dabbawala.
  • Todas las loncheras se recogen en el lugar común para etiquetarlas y colocarlas en carruajes con códigos únicos. Este es el trabajo del mapeador!
  • Según el código, los vagones que deben ir al destino común se clasifican y se suben a los respectivos trenes. Esto se llama Shuffle and Sort phase en MapReduce.
  • En cada estación de ferrocarril, el Dabbawala recoge el vagón y entrega cada caja en eso a sus respectivos clientes. Esta es la fase de reducción.

Al igual que la forma en que cada nodo del clúster hace su trabajo sin el conocimiento de otros procesos, cada Dabbawala participa en el flujo de trabajo simplemente enfocándose en su tarea. Esta es una evidencia de cómo un entorno paralelo puede escalar mejor.
¡Es fascinante ver cómo el centenario sistema Dabbawala ha adoptado un algoritmo que ahora está impulsando la revolución del Big Data!

#copiado de
¿Qué es común entre Mumbai Dabbawalas y Apache Hadoop?

Digamos que hay una caja variada de dulces y un maestro quiere contar cuántos tipos diferentes de chocolate existen. Probablemente podría hacerlo contando un solo frasco: 5 rojos, 10 verdes, etc.

Ahora digamos, hay 40-50 de esos frascos. ¿Cómo podrían hacerlo de manera efectiva? Puede ser que en lugar de contar sola, la maestra podría pedirle a algunos de los estudiantes que cuenten cada frasco. Podría pedirle al resto de los estudiantes que cuenten una sola variedad y preguntar a cada estudiante que cuente tarros sobre los recuentos de colores individuales. Al final, el maestro haría que un alumno supiera sobre el rojo, otro sobre el verde, etc.

El profesor está haciendo la función de rastreador de trabajo. Los estudiantes que cuentan desde frascos actúan como mapeadores (y combinadores) y finalmente los estudiantes que cuentan rojo, verde son reductores.

Copiado-pegado de una respuesta relevante .

Piense que tiene una cantidad infinitamente grande de datos en una cantidad infinitamente grande de máquinas infinitamente potentes.

Pero la red entre estas máquinas es lenta.

Para ejecutar una tarea computacional en todos estos datos, es natural insertar código en los datos . En lugar de reunir una cantidad infinita de datos en algún lugar a través de una conexión lenta, puede enviar el código a las máquinas que almacenan los datos y ejecutan partes de su algoritmo allí.

Ahora la pregunta es: ¿qué puede calcular con el código que se ejecuta junto a los datos y qué datos intermedios aún tendría que transferir ?

Por ejemplo, si desea contar el número de apariciones de la palabra “the” en petabytes de texto, entonces lo único que necesitará para que se le envíe de vuelta desde cada máquina es el número de ocurrencias de “the” en los datos en esa maquina.

Lo que se puede ejecutar localmente es la fase de Mapa .
Lo que debe ejecutarse después de que se realicen las agregaciones de datos intermedios es la fase Reducir .

La imagen de arriba dará una visión general de qué es MapReduce y qué se hace en Map an Reduce Phase. Creo que esta es la forma más fácil de entender MapReduce.

Definición:

¿Qué es MapReduce?

MapReduce es una técnica de procesamiento y un modelo de programa para la computación distribuida basada en Java. El algoritmo MapReduce contiene dos tareas importantes, a saber, Map y Reduce. Map toma un conjunto de datos y los convierte en otro conjunto de datos, donde los elementos individuales se dividen en tuplas (pares clave / valor). En segundo lugar, reduzca la tarea, que toma la salida de un mapa como entrada y combina esas tuplas de datos en un conjunto más pequeño de tuplas. Como implica la secuencia del nombre MapReduce, la tarea de reducción siempre se realiza después del trabajo de mapa.

La principal ventaja de MapReduce es que es fácil escalar el procesamiento de datos en múltiples nodos informáticos. Bajo el modelo MapReduce, las primitivas de procesamiento de datos se denominan mapeadores y reductores. La descomposición de una aplicación de procesamiento de datos en mapeadores y reductores a veces no es trivial. Pero, una vez que escribimos una aplicación en el formulario MapReduce, escalar la aplicación para que se ejecute en cientos, miles o incluso decenas de miles de máquinas en un clúster es simplemente un cambio de configuración. Esta escalabilidad simple es lo que ha atraído a muchos programadores a usar el modelo MapReduce.

No escribiré una respuesta muy larga para explicar qué es exactamente mapreduce. Debido a que es un concepto tan simple que realmente no necesita una larga explicación.

Cualquier persona que pertenezca al campo de la informática al menos comprende la siguiente consulta simple de SQL:

seleccione sum (Field-A) de

donde Field Field-B == ‘someValue’ groupBy FIeld-C;

Para escribirlo de manera más genérica, lo expresaría de la siguiente manera:

seleccione SomeFunction (SomeField1) de SomeTable donde SomeField2 == ‘SomeValue’ GroupBy “SomeField3”;

Mapreduce hace lo mismo al dividir el problema en partes. Aquí están las diferentes partes para lograr lo mismo en map-reduce:

  1. “SomeField3” es la clave de Mapper. Y “SomeField1” es el valor de Mapper.
  2. La condición “Dónde” es la lógica dentro de una función de mapa para soltar registros.
  3. “SomeFunction” es su función de reducción.

Esta es la mejor explicación intuitiva que puede obtener si conoce un poco sobre MapReduce Framework.

http://www.selfreflex.com

Una persona quiere hacer un trabajo, por ejemplo, clasificar documentos, pero él mismo no puede terminarlo por la limitación de su capacidad. Entonces divide el trabajo en pequeñas tareas y le pide a cierta cantidad de personas que completen una pieza a la vez. Cuando se haya realizado una tarea, informe el resultado al chico. Finalmente, cuando todas las tareas estén terminadas, ese chico simplemente combina todos los resultados intermedios y genera el resultado final.

MapReduce explicado en 41 palabras

Objetivo: contar el número de libros en la biblioteca.
Mapa: Cuenta el estante n. ° 1, cuento el estante n. ° 2.
(Cuantas más personas tengamos, más rápido será esta parte).
Reducir: todos nos juntamos y sumamos nuestros recuentos individuales.

¡La mejor implementación de Map Reduce en la vida real es una elección! La población transmite su voto a un recuadro. El proceso (humano en este caso) sigue los datos (el recuadro), cuenta y resume el resultado, envía el resultado al tipo de poste que resume todos los resultados, lo envía a otro individuo y así ¡hasta que sepamos quién es el ganador!
¡Los procesos que siguen son datos y se ejecutan en paralelo!
¡Simple como eso!

Las analogías funcionan aquí, una que escribí en mi blog recientemente. Se trata de fútbol. Espero que te guste. Salte a la parte MapReduce Si conoce HDFS.
HDFS y MapReduce .. una guía para no programadores sobre BIG DATA

La forma más fácil de entender esto sería de algo que puede usar a diario: Facebook

Es posible que vea esas sugerencias de amigos o sugerencias grupales, etc. Básicamente verifica su lista de amigos y su lista de amigos e intenta reducir la lista al encontrar amigos en común y mostrarle las sugerencias. Es como un mapa que crean y eliminan los existentes y reducen a los que tienen amigos en común.

Para obtener una explicación muy simple e intuitiva de MapReduce, siga el siguiente enlace:

Especialista en Big Data: MapReduce

Fuente: Youtube (Jigsaw Academy)

Vi esto en internet

Fue muy intuitivo para mí.

Lea esta publicación de blog: ¿Qué es MapReduce?

En el nivel más alto, muchas manos hacen un trabajo ligero.

Mapa: árbol de distribución de tareas
Reducir: agregación de datos