Ejemplo de MapReduce Python

Ejemplo de MapReduce Python
Muchas veces, al tratar con datos, encontramos una gran cantidad de datos. Hay muchas metodologías para manejar este caso. Pero muchos enfoques no son capaces de manejar la situación. Entonces usamos map-reduce para tales situaciones. Un "MapReduce" es un marco y un modelo de programación dentro de la arquitectura de Hadoop, que se utiliza en el procesamiento de una gran cantidad de datos en los sistemas de archivos Hadoop.

"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.

  • Fase de mapa
  • Reducir la fase

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

  • Cliente: Es quien es responsable de llevar el trabajo a "MapReduce" para la función de procesamiento. Puede haber una posibilidad de múltiples clientes que envíen trabajos continuamente para el procesamiento al gerente "MapReduce".
  • Trabajo: Es la tarea/trabajo real que el cliente quiere hacer que contenga muchas tareas más pequeñas que el cliente desea para la ejecución.
  • Hadoop Mapreduce Master: La función de este maestro es dividir el trabajo en partes de trabajo más pequeñas.
  • Partes de trabajo: Los sub-Jobs obtenidos de la función de trabajo principal. El valor resultante de todas las piezas de trabajo forma colectivamente una salida final.
  • Datos de entrada: Los datos que se introducen en el map-reduce para el procesamiento de datos.
  • Datos resultantes: Contiene las palabras limitadas en un resultado.

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()
# palabras = línea.dividir() #!/usr/bin/env python
"" "Mapper.py "" "
Sys de importación
# La entrada proviene de Stdin (entrada estándar)
para línea en sys.Stdin:
# Eliminar espacios en blanco liderantes y finales
línea = línea.banda()
# divide la línea en palabras
palabras = línea.dividir()
# Aumentar los contadores
Para la palabra en palabras:
# Escriba los resultados en STDOUT (salida estándar);
# delimitado por tabulaciones; El recuento de palabras triviales es 1
imprimir ('%s \ t%s'%(palabra, 1))

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 python
"" "Reductor.py "" "
Sys de importación
current_word = ninguno
actual_count = 0
palabra = ninguno
para línea en sys.Stdin:
línea = línea.banda()
# analizar la entrada que obtuvimos del mapeador.py
palabra, recuento = línea.Split ('\ t', 1)
intentar:
count = int (Count)
Excepto ValueError:
continuar
Si Current_Word == Word:
actual_count += contar
demás:
Si Current_Word:
# Escribir el resultado a stdout
imprimir ('%s \ t%s'%(current_word, current_count))
actual_count = recuento
current_word = word
Si Current_Word == Word:
imprimir ('%s \ t%s'%(current_word, current_count))

El 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 += Count

Valor 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".