"MapReduce" es uno de los terceros componentes de Hadoop. Este marco es eficiente para el procesamiento de grandes datos en paralelo con las otras tareas. El propósito básico de "MapReduce" es mapear cada trabajo colectivamente en grupos, y luego esto lo reducirá a tareas iguales para reducir la formación del clúster de los procesos. La tarea "MapReduce" se divide en dos fases.
Mapa reducir el concepto y la arquitectura
Los datos de entrada se distribuyen en pequeños fragmentos para el procesamiento de datos a través de diferentes trabajadores. Cada fragmento pequeño se asigna a una situación/estado intermedio. Que los datos intermedios se recopilan juntos, y luego se produce el proceso de partición que se basa en un valor clave para mantener todo el material relacionado entre sí. Entonces esta partición de datos conduce al conjunto reducido resultante. Consideremos el siguiente diagrama.
Partes de la arquitectura
Las partes de trabajo que se obtienen del trabajo se transfieren al mapa y reducen las tareas. Estas dos tareas tienen programas y algoritmos que dependen del requisito del usuario. Los datos de entrada se utilizan e ingresan en la tarea del mapa. La tarea del mapa generará el par de valores clave intermedio que actuará como una entrada para la fase de reducción. En la fase de reducción, después de realizar el proceso de reducción, almacene los resultados finales en el HDFS. Ahora avanzando hacia el ejemplo de map-reduce, el código en el ejemplo se explica con las fases por separado y su salida también.
Código de Python MapReduce
La API de transmisión de Hadoop se usa para pasar datos entre el mapa y reducir el código a través de Stdin y Stout. Para leer datos de entrada e imprimir la salida, "SYS.stdin "se usa. Otros procedimientos se manejan a través de la transmisión de Hadoop en sí.
Fase de mapa
El uso principal de la fase de mapa es mapear los datos de entrada en forma de pares de teclas. El valor clave que utilizamos puede actuar como ID es una dirección, y el valor contiene el valor real que se mantiene. Esta fase de mapa generará un valor intermedio con la clave como salida. Para reducir la función, la salida del mapa se usa como entrada. Consideremos el código para la función del mapa. Esta función también se conoce como mapper.py.
Debe crear un archivo y guardar el código en ese archivo. i.e/home/aqsa/mapeador.py. El script del mapa no puede calcular un valor intermedio de las palabras totales que ocurre varias veces. En cambio, dará a las partes de los datos, incluso las palabras están repitiendo tiempos de múltiplos en los datos de entrada. Dejaremos que la función reduzca el número de palabras calculando la suma de su ocurrencia. Una cosa que debe tenerse en cuenta, el archivo tiene permiso de ejecución (chmod+x/home/aqsa/mapper.Py). Avanzando hacia el código, el primer paso será importar el módulo SYS. La entrada se tomará utilizando un bucle for stdin.
Para línea en sys.Stdin:
Esta función luego leerá la línea por línea, despojará todas las líneas y eliminará los espacios en blanco entre ellos a través de la función de tira. Del mismo modo, cada línea se divide en palabras usando una función dividida. Ambas funciones se declaran dentro del cuerpo de bucle para.
# línea = línea.banda()Después de que se realicen todas las funciones, cada palabra se imprimirá una por una.
Los valores intermedios sufren dos procesos antes de ingresar a la fase de reducción. Estas dos etapas son el barajaje y la fase de clasificación.
Fase de barajado:
El propósito de esta función es asociar todos los valores de una clave similar. Por ejemplo, considere una palabra (sí, 1) que ha ocurrido 4 veces en el archivo de salida. Entonces, después de esta fase, la salida se mostrará como (sí, [1,1,1,1]).
Fase de clasificación:
Cuando se completa el proceso de arrastre, los valores de salida se envían a la fase de clasificación. En esta fase, todas las teclas y valores se ordenan automáticamente. En Hadoop, el proceso de clasificación no requiere ningún algoritmo de clasificación, ya que es un proceso automático. Se debe a la interfaz incorporada llamada 'WritableComParableInterface'.
Reducir la fase
Los valores intermedios se transfieren a la función de reducir después de que se clasifican. El grupo de funciones de reducción de los datos dependiendo del par de valores clave de acuerdo con el algoritmo reductor utilizado por el programador.
El código que implementaremos se guarda en un archivo de la ruta “/home/aqsa/reductor.py ". Este archivo leerá los resultados del "mapeador.PY "FILE DEL STDIN. Para ese propósito, el formato del "mapeador.archivo py "y la entrada proveniente del mapeador.Py debería ser lo mismo. Después de eso, esta función toma la suma de la ocurrencia de cada palabra, y la salida final se muestra a través de stdout.
#!/usr/bin/env pythonEl módulo SYS se importa primero. Entonces una variable para el proceso de conteo se declara 0 como el valor inicial. Hemos tomado los valores de entrada usando para bucle, y las líneas están separadas al igual que la función de mapa. Para dividir las palabras, usamos las palabras y las variables de recuento.
# Contar, palabra = línea.Split ('\ t', 1)En el cuerpo de prueba, a la variable de recuento se le asigna el valor. El estado if se usa para verificar si la palabra próxima es la misma que la almacenada; la variable de conteo se incrementa.
# Current_count += CountValor resultante
Para verificar los resultados, vaya a la terminal de Linux. Aquí usaremos una cadena que combine palabras simples y repetitivas para obtener resultados versátiles.
$ echo "mapa y reduce son una función efectiva y eficiente, forman un mapa reduce el marco" | /Home/AQSA/Mapper.Py | ordenar -k1,1 | /Home/AQSA/Reductor.py
Conclusión
'Ejemplo de MapReduce Python' consiste en la funcionalidad básica y la arquitectura de MAP-Reduce colectiva y por separado. La formación de valor intermedio juega un papel importante en este propósito. Para obtener el valor limitado, siempre que desee administrar Big Data, debe usar una función de "MapReduce" en el programa. Leer este artículo será una fuente de información completa sobre la función "MapReduce".