Procesamiento de datos con streaming - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Procesamiento de datos con streaming

El streaming de Hadoop es una utilidad que viene con Hadoop y que le permite desarrollar MapReduce ejecutables en lenguajes que no sean Java. El streaming se implementa en forma de un archivo JAR, por lo que puede ejecutarlo desde la API de Amazon EMR o la línea de comando como un archivo JAR estándar.

En esta sección se describe cómo utilizar el streaming con Amazon EMR.

nota

El streaming de Apache Hadoop es una herramienta independiente. Por tanto, todas las funciones y parámetros no se describen aquí. Para más información sobre el streaming de Hadoop, vaya a http://hadoop.apache. org/docs/stable/hadoop-streaming/HadoopStreaming.html.

Uso de la utilidad de streaming de Hadoop

Esta sección describe cómo utilizar la utilidad de streaming de Hadoop.

Proceso de Hadoop
1

Escriba su ejecutable de mapeador y reductor en el lenguaje de programación que desee.

Siga las instrucciones de la documentación de Hadoop para escribir sus ejecutables de streaming. Los programas deben leer su entrada a partir de los datos de entrada y salida estándar a través de la salida estándar. De forma predeterminada, cada línea de entrada/salida representa un registro y la primera pestaña de cada línea se utiliza como separador entre la clave y el valor.

2

Pruebe sus ejecutables localmente y cárguelos en Amazon S3.

3

Utilice la interfaz de línea de comandos de Amazon EMR o la consola de Amazon EMR para ejecutar su aplicación.

Cada script de mapeador se lanza como proceso independiente en el clúster. Cada ejecutable del reductor convierte la salida del ejecutable del mapeador en la salida de datos del flujo de trabajo.

La mayoría de las aplicaciones de streaming requieren los parámetros input, output, mapper y reducer. En la siguiente tabla se describen estos y otros parámetros opcionales.

Parámetro Descripción Obligatorio
-input

Ubicación de los datos de entrada en Amazon S3.

Tipo: cadena

Valor predeterminado: None

Restricción: URI. Si no se especifica ningún protocolo, utiliza el sistema de archivos predeterminado del clúster.

-output

Ubicación en Amazon S3 donde Amazon EMR carga los datos procesados.

Tipo: cadena

Valor predeterminado: None

Restricción: URI

Valor predeterminado: si no se especifica una ubicación, Amazon EMR carga los datos en la ubicación especificada por input.

-mapper

Nombre del ejecutable del mapeador.

Tipo: cadena

Valor predeterminado: None

-reducer

Nombre del ejecutable del reductor.

Tipo: cadena

Valor predeterminado: None

-cacheFile

Una ubicación de Amazon S3 que contiene archivos que Hadoop copia en su directorio de trabajo local (principalmente para mejorar el rendimiento).

Tipo: cadena

Valor predeterminado: None

Restricciones: [URI] # [nombre de symlink que crear en el directorio de trabajo]

No
-cacheArchive

Archivo JAR que extraer en el directorio de trabajo

Tipo: cadena

Valor predeterminado: None

Restricciones: [URI] # [nombre de directorio de symlink que crear en el directorio de trabajo]

No
-combiner

Combina resultados

Tipo: cadena

Valor predeterminado: None

Limitaciones: nombre de clase Java

No

El siguiente ejemplo de código es un ejecutable de mapeador escrito en Python. Este script forma parte de la aplicación de WordCount ejemplo.

#!/usr/bin/python import sys def main(argv): line = sys.stdin.readline() try: while line: line = line.rstrip() words = line.split() for word in words: print "LongValueSum:" + word + "\t" + "1" line = sys.stdin.readline() except "end of file": return None if __name__ == "__main__": main(sys.argv)