
- Hadoop - Inicio
- Hadoop - Grandes Datos Generales
- Hadoop - Grandes Soluciones de Datos
- Hadoop: Introducción
- Hadoop - Configuración Entorno
- Hadoop - HDFS Descripción General
- Hadoop - HDFS Operaciones
- Hadoop - Referencia de Comandos
- Hadoop - MapReduce
- Hadoop - Streaming
- Hadoop - Varios Nodos de Clúster
Hadoop - Streaming
Hadoop streaming es una utilidad que viene con el Hadoop distribucin. Esta utilidad le permite crear y ejecutar Map/Reduce los trabajos con cualquier archivo ejecutable o script como el mapa y/o el reductor.
Ejemplo usando Python
Para Hadoop streaming, vamos a considerar el conteo de palabras. Cualquier trabajo de Hadoop debe tener dos fases: mapa y reductor. Hemos escrito los cdigos para el mapa y el reductor de script en python para que se ejecute con Hadoop. Tambin se puede escribir la misma en Perl y Ruby.
Fase Cdigo Mapa
!/usr/bin/python import sys # Input takes from standard input for myline in sys.stdin: # Remove whitespace either side myline = myline.strip() # Break the line into words words = myline.split() # Iterate the words list for myword in words: # Write the results to standard output print '%s\t%s' % (myword, 1)
Asegrese de que este archivo tiene permiso de ejecucin (chmod +x /home/ expert/hadoop-1.2.1/mapper.py).
Fase Cdigo reductor
#!/usr/bin/python from operator import itemgetter import sys current_word = "" current_count = 0 word = "" # Input takes from standard input for myline in sys.stdin: # Remove whitespace either side myline = myline.strip() # Split the input we got from mapper.py word, count = myline.split('\t', 1) # Convert count variable to integer try: count = int(count) except ValueError: # Count was not a number, so silently ignore this line continue if current_word == word: current_count += count else: if current_word: # Write result to standard output print '%s\t%s' % (current_word, current_count) current_count = count current_word = word # Do not forget to output the last word if needed! if current_word == word: print '%s\t%s' % (current_word, current_count)
Guardar el mapa y reductor en los cdigos de mapper.py y reductor.py en Hadoop directorio home. Asegrese de que estos archivos tienen permisos de ejecucin (chmod +x mapper.py and chmod +x reducer.py). Sangra Como python es sensible por lo que el mismo cdigo se puede descargar desde el enlace que aparece a continuacin.
Ejecucin del Programa WordCount
$ $HADOOP_HOME/bin/hadoop jar contrib/streaming/hadoop-streaming-1. 2.1.jar \ -input input_dirs \ -output output_dir \ -mapper <path/mapper.py \ -reducer <path/reducer.py
Donde " \" se usa para continuacin de lnea clara de legibilidad.
Por ejemplo,
./bin/hadoop jar contrib/streaming/hadoop-streaming-1.2.1.jar -input myinput -output myoutput -mapper /home/expert/hadoop-1.2.1/mapper.py -reducer /home/expert/hadoop-1.2.1/reducer.py
Streaming Cmo Funciona
En el ejemplo anterior, tanto el mapa y el reductor son secuencias de comandos python que lee la entrada desde la entrada estndar y emiten la salida a la salida estndar. La utilidad crea un mapa/Reducir trabajo, enviar el trabajo a un clster, y supervisar el progreso de la tarea hasta que finalice.
Cuando se especifica una secuencia de mapas mapa, cada tarea se iniciar la secuencia de comandos como un proceso independiente cuando el mapa se inicializa. Como el mapa tarea se ejecuta, lo que convierte sus entradas en las lneas de alimentacin y las lneas de la entrada estndar (STDIN) del proceso. En el nterin, el mapa recoge la lnea de productos orientada a la salida estndar (STDOUT) del proceso y convierte cada lnea en un par de clave/valor, que se recoge en la salida del mapa. De forma predeterminada, el prefijo de la lnea hasta el primer carcter de tabulacin es la clave y el resto de la lnea (excluyendo el carcter de tabulacin) ser el valor. Si no hay ningn carcter de tabulacin en la lnea y, a continuacin, toda la lnea se considera la clave y el valor es null. Sin embargo, esta puede ser personalizada, en funcin de una necesidad.
Cuando se especifica una secuencia de reductores reductor, cada tarea se iniciar la secuencia de comandos como un proceso separado, a continuacin, el reductor se ha inicializado. Como el reductor tarea se ejecuta, convierte su clave de entrada y los valores en las lneas pares y alimenta las lneas de la entrada estndar (STDIN) del proceso. En el nterin, el reductor recoge la lnea de productos orientada a la salida estndar (STDOUT) del proceso, convierte cada lnea en un par de clave/valor, que se recoge en la salida del reductor. De forma predeterminada, el prefijo de la lnea hasta el primer carcter de tabulacin es la clave y el resto de la lnea (excluyendo el carcter de tabulacin) es el valor. Sin embargo, esta puede ser personalizada segn necesidades especficas.
Comandos importantes
Parmetros | Descripcin |
---|---|
-Directorio de entrada/nombre de archivo | Mapa de ubicacin de entrada. (Obligatorio) |
-Directorio de salida de nombre | Ubicacin de salida por reductor. (Obligatorio) |
-Mapper ejecutable o script o JavaClassName | Mapa ejecutable. (Obligatorio) |
-Reductor ejecutable o script o JavaClassName | Reductor ejecutable. (Obligatorio) |
-Archivo nombre de archivo | Hace que el mapa, el reductor, ejecutable o combinadora disponible localmente en los nodos de clculo. |
-Inputformat JavaClassName | Clase de retorno debe pares clave/valor de texto clase. Si no se especifica, TextInputFormat se utiliza como valor predeterminado. |
-Outputformat JavaClassName | Clase de debe tener pares clave/valor de texto clase. Si no se especifica, TextOutputformat se utiliza como valor predeterminado. |
-Partitioner JavaClassName | Clase que determina qu reducir la clave es enviado a. |
-Combinador o JavaClassName streamingCommand | Combinador ejecutable de salida del mapa. |
-Cmdenv nombre=valor | Pasa la variable de entorno a los comandos de streaming. |
-Inputreader | Para mantener la compatibilidad: especifica un registro clase de lector (en lugar de un formato de entrada clase). |
-Verbose | Resultados detallados. |
-Lazyoutput | Crea una salida perezosamente. Por ejemplo, si el formato de salida se basa en FileOutputFormat, el archivo de salida se crea slo en la primera llamada a la salida.recoger (o el contexto.write). |
-Numreducetasks | Especifica el nmero de reductores. |
-Mapdebug | Script para llamar al mapa tarea falla. |
-Reducedebug | Secuencia de comandos para llamar al reducir tarea falla. |