Buenos ejemplos de MapReduce

Yo no podía pensar en ninguna buena ejemplos que no sea el «cómo contar las palabras en un texto largo con MapReduce» de la tarea. He encontrado este no fue el mejor ejemplo para dar a los demás una impresión de lo poderoso que esta herramienta puede ser.

Yo no estoy buscando el código-fragmentos, en realidad sólo «textual» ejemplos.

  • Creo que algo similar, pero mucho mejor ejemplo es el recuento de palabras, para que todos sus archivos de texto que usted tiene en su computadora. Es más fácil de entender y demuestra el poder de MapReduce.
  • A las cuatro últimas preguntas que he buscado, he encontrado cerrado como no constructivo en este sitio. Por fortuna tienen respuestas ya. Para los autores que avalan mi gratitud y que, por ahora, son más de 80 las personas que no entienden el cierre de la política. No es que importe a los demás, pero yo soy un programador profesional desde el inicio de los años 80 y, por ahora, me encontré a mí mismo haciendo las preguntas equivocadas 🙂
  • Vale la pena echar un vistazo a MapReduce patrones de diseño: por ejemplo, algunos cubiertos en estas diapositivas y se puede ver en este libro
InformationsquelleAutor pagid | 2012-09-11

4 Kommentare

  1. 287

    Reducir el mapa es un marco de trabajo que fue desarrollado para procesar enormes cantidades de datos de manera eficiente.
    Por ejemplo, si tenemos 1 millón de registros en un conjunto de datos, y se almacena en una representación relacional – es muy caro para derivar los valores y realizar cualquier tipo de transformaciones en estos.

    Por Ejemplo, En SQL, Dada la Fecha de Nacimiento, para saber cuántas personas de edad > 30 de un millón de registros tomaría un tiempo, y esto sólo aumentaría en orden de magnitud cuando la complejidad de la consulta aumenta.
    Reducir el mapa proporciona un clúster basado en la aplicación donde se procesan los datos de manera distribuida

    Aquí es un artículo de la wikipedia que explica lo que reducir el mapa es todo acerca de

    Otro buen ejemplo es Encontrar Amigos a través de reducir el mapa puede ser un poderoso ejemplo para entender el concepto, y
    un bien utilizado en los casos de uso.

    Personalmente, encontró en este enlace muy útil para entender el concepto

    Copia de la explicación en el blog (En caso de que el enlace va a rancio)

    Encontrar Amigos

    MapReduce es un marco originalmente desarrollado por Google que permite a los
    para facilitar computación distribuida a gran escala a través de un número de dominios.
    Apache Hadoop es una implementación de código abierto.

    Voy a pasar por alto los detalles, pero se trata de la definición de dos
    funciones: una función de mapa y una reducción de la función. La función de mapa de
    toma un valor y salidas clave:pares de valores. Por ejemplo, si definimos
    un mapa de la función que toma una cadena y salidas de la longitud de la palabra
    como la clave y la palabra en sí como el valor del mapa(steve) sería
    volver 5:steve y el mapa(savannah) volvería a 8:savannah. Usted puede tener
    notó que la función de mapa de apátridas y sólo requiere la entrada
    el valor a calcular es el valor de salida. Esto nos permite ejecutar el mapa
    función contra los valores en paralelo y proporciona una gran ventaja.
    Antes de llegar a la reducción de la función, en el marco de mapreduce grupos
    todos los valores de clave, de modo que si el mapa de funciones de salida de la
    siguiente clave:los pares de valores:

    3 : the
    3 : and
    3 : you
    4 : then
    4 : what
    4 : when
    5 : steve
    5 : where
    8 : savannah
    8 : research
    

    Consiguen agrupados como:

    3 : [the, and, you]
    4 : [then, what, when]
    5 : [steve, where]
    8 : [savannah, research]
    

    Cada una de estas líneas, a continuación, se pasa como argumento para reducir la
    la función, que acepta una clave y una lista de valores. En esta instancia,
    podríamos estar tratando de averiguar cómo muchas de las palabras de ciertas longitudes
    existen, por lo que nuestro reducir la función se acaba de contar el número de elementos en
    la lista y la salida de la llave con el tamaño de la lista, como:

    3 : 3
    4 : 3
    5 : 2
    8 : 2
    

    Las reducciones también se puede hacer en paralelo, ofreciendo de nuevo una gran
    ventaja. Luego podemos ver en estos resultados finales y ver que hay
    fueron sólo dos palabras de longitud 5 en nuestro corpus, etc…

    El ejemplo más común de mapreduce es para contar el número de
    los tiempos de palabras que aparecen en un corpus. Supongamos que tienes una copia de la internet
    (He tenido la suerte de haber trabajado en esa situación), y
    quisiera una lista de cada palabra en la internet, así como muchas
    veces que ocurrió.

    La forma de este enfoque sería para acortar los documentos que
    tienen (en palabras), y pasar cada palabra a un mapper. El asignador de
    le espeté entonces la palabra de nuevo, junto con un valor de 1. El
    la agrupación de fase tomará todas las claves (en este caso las palabras), y hacer un
    lista de los 1. El reducir fase, a continuación, toma una tecla (la palabra) y una lista de
    (una lista de 1 por cada vez que la llave apareció en la internet), y
    sumas la lista. El reductor de velocidad, a continuación, salidas de la palabra, junto con el
    el recuento. Cuando todo está dicho y hecho usted tendrá una lista de cada palabra en
    internet, junto con el número de veces que apareció.

    Fácil, derecho? Si alguna vez has leído acerca de mapreduce, el escenario anterior
    no es nada nuevo… es el «Hola, Mundo» de mapreduce. Así que aquí está
    un mundo real de casos de uso (Facebook puede o no puede realmente hacer la
    siguiente, es sólo un ejemplo):

    Facebook tiene una lista de amigos (tenga en cuenta que los amigos son un bi-direccional
    cosa que en Facebook. Si soy tu amigo, eres mía). También tienen
    un montón de espacio en disco y tienen cientos de millones de solicitudes
    todos los días. Ellos han decidido pre-calcular los cálculos cuando se puede a
    reducir el tiempo de procesamiento de las solicitudes. Una forma común de solicitud de procesamiento de
    es el «Tú y Joe han 230 amigos en común» característica. Cuando
    visitar a alguien del perfil, se puede ver una lista de amigos que tienes en
    común. Esta lista no cambia con frecuencia, así que sería un desperdicio
    recalcular cada vez que el usuario visitó el perfil (seguro que se puede utilizar
    un decente estrategia de almacenamiento en caché, pero entonces yo no sería capaz de continuar
    escribir sobre mapreduce para este problema). Vamos a usar
    mapreduce, de modo que podemos calcular todos los amigos en común una vez que un
    día y almacenar los resultados. Más tarde es sólo una búsqueda rápida. Hemos
    tengo un montón de discos, es barato.

    Asumir los amigos se almacenan como Persona->[Lista de Amigos], nuestro
    lista de amigos, entonces es:

    A -> B C D
    B -> A C D E
    C -> A B D E
    D -> A B C E
    E -> B C D
    

    Cada línea será un argumento a un mapper. Por cada amigo en el
    lista de amigos, el asignador de salida será de un par clave-valor. La clave
    ser un amigo junto con la persona. El valor será el de la lista de
    amigos. La clave va a ser ordenados, para que los amigos están en orden,
    provocando que todos los pares de amigos para ir a la misma reductor. Esto es difícil
    para explicar con texto, así que vamos a hacerlo y ver si usted puede ver la
    patrón. Después de que todos los miembros de la comunidad se lleva a cabo en ejecución, usted tendrá una lista
    como este:

    For map(A -> B C D) :
    
    (A B) -> B C D
    (A C) -> B C D
    (A D) -> B C D
    
    For map(B -> A C D E) : (Note that A comes before B in the key)
    
    (A B) -> A C D E
    (B C) -> A C D E
    (B D) -> A C D E
    (B E) -> A C D E
    For map(C -> A B D E) :
    
    (A C) -> A B D E
    (B C) -> A B D E
    (C D) -> A B D E
    (C E) -> A B D E
    For map(D -> A B C E) :
    
    (A D) -> A B C E
    (B D) -> A B C E
    (C D) -> A B C E
    (D E) -> A B C E
    And finally for map(E -> B C D):
    
    (B E) -> B C D
    (C E) -> B C D
    (D E) -> B C D
    Before we send these key-value pairs to the reducers, we group them by their keys and get:
    
    (A B) -> (A C D E) (B C D)
    (A C) -> (A B D E) (B C D)
    (A D) -> (A B C E) (B C D)
    (B C) -> (A B D E) (A C D E)
    (B D) -> (A B C E) (A C D E)
    (B E) -> (A C D E) (B C D)
    (C D) -> (A B C E) (A B D E)
    (C E) -> (A B D E) (B C D)
    (D E) -> (A B C E) (B C D)
    

    Cada línea se pasa como argumento a un reductor de velocidad. El reducir
    la función simplemente se cruzan las listas de valores y de salida de la misma
    clave con el resultado de la intersección. Por ejemplo, reducir((a B) ->
    (C D E) (B C D)) la salida (B) : (C, D) y significa que los amigos de Un
    e B C y D como amigos en común.

    El resultado después de la reducción es:

    (A B) -> (C D)
    (A C) -> (B D)
    (A D) -> (B C)
    (B C) -> (A D E)
    (B D) -> (A C E)
    (B E) -> (C D)
    (C D) -> (A B E)
    (C E) -> (B D)
    (D E) -> (B C)
    

    Ahora cuando D visitas B del perfil, se puede buscar rápidamente (B D) y ver
    que tienen tres amigos en común, (A C E).

    • Otro ejemplo sería el análisis de los datos meteorológicos de todo el mundo. Encontrar el Max y min para cualquier región. Este es un muy buen ejemplo.
    • La generación de todos los intermedios tuplas y, a continuación, después de la comprobación de la intersección de todos, no es tedioso? ¿No sería mejor simplemente generar todas las posibles amigo pares, como AB AC BC etc y acaba de pasar estos pares con la totalidad de las listas de amigos, sólo de los dos amigos de la pareja, a una máquina en particular y se deja calcular la intersección? Lo que me estoy perdiendo aquí?
    • Creo que el punto está en la escalabilidad, el paralelismo, y el tamaño de todo el conjunto de datos. Para los pequeños problemas, MapReduce no está adaptado, pero para grandes conjuntos de datos (creo que millones de personas, con cientos de amigos cada uno).
    • ¿Qué pasa si Una visita E del perfil? No hay (a, E) en el resultado final, a pesar de que tienen amigos en común.
    • eso es porque a y E no son amigos de sí mismos. En ese caso, este enfoque parece de verdad insuficiente (a menos que usted tome en cuenta que Un o E podido ocultar su friendlist para los no-amigos:) )
    • hola karthikr… me puedes decir de dónde viene la agrupación suceder como se ha especificado en su respuesta..3 : [el, y]?
    • qué ocurre en el particionador y de ordenación de la fase?
    • Estoy confundido acerca de la agrupación de fase. Mapa y Reducir puede ser, obviamente, corrió en paralelo pero, ¿qué acerca de la agrupación de fase ? Debe realizarse en un solo hilo o me estoy perdiendo algo ?
    • No sé por qué la gente sigue dando muy sencillos ejemplos para explicar una herramienta tan poderosa ?

  2. 3

    Un conjunto de conocidas las operaciones que se pueden hacer en MapReduce es el conjunto de la normal de operaciones SQL: SELECT, SELECT where, GROUP BY, ect.

    Otro buen ejemplo es la matriz de multiplicar, donde pasar una fila de M y todo vector x y calcular un elemento de M * x.

  3. 2

    De vez en cuando me presente el SEÑOR de los conceptos a las personas. Me parece tareas de procesamiento de conocer a las personas y ubicarlas en el SEÑOR paradigma.

    Generalmente me tomo dos cosas:

    1. Grupo /Agregaciones. Aquí la ventaja de que el ruido de la etapa es clara. Una explicación que arrastrando los pies, también se distribuye tipo + una explicación de la distribución de algoritmo de ordenación de ayuda también.

    2. Combinación de dos tablas. Las personas que trabajan con base de datos están familiarizados con el concepto y su problema de escalabilidad. Para mostrar cómo se puede hacer en el SEÑOR

    • a explian a los no nerds yo uso los hijos método: usted tiene un montón de ganas de los niños, y muchas, muchas cartas. dar a cada niño una cantidad de cartas diciéndoles ordenarlos por la parte de atrás de la tarjeta de *baraja, a continuación, por el número de imagen y, a continuación, por el palo – es decir, la función de mapa de cada niño termina y da asignado conjunto de los adultos, de dos en dos. cada adulto «reduce» la pila en una pila, y luego cada uno de los dos adultos se dan a un adulto hay tarjeta de pilas. que es, por definición, la reducción de la función que se puede ejecutar más de una vez, según el número de niños/pilas. la mayoría de la gente consigue en el primer intento

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea