Elaborazione di dati con lo streaming - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Elaborazione di dati con lo streaming

Hadoop streaming è un'utilità fornita con Hadoop che consente di sviluppare eseguibili in linguaggi diversi da Java. MapReduce Streaming viene implementato sotto forma di un file JAR, perciò è possibile eseguirlo dall'API o riga di comando di Amazon EMR in modo analogo a quanto avviene per un file JAR standard.

Questa sezione descrive come utilizzare Streaming con Amazon EMR.

Nota

Apache Hadoop Streaming è uno strumento indipendente. Per questo motivo, tutte le funzioni e i parametri non sono descritti in questa pagina. Per ulteriori informazioni sullo streaming Hadoop, visitate http://hadoop.apache.org/docs/stable/hadoop-streaming/ .html. HadoopStreaming

Utilizzo dell'utility Hadoop Streaming

Questa sezione descrive come utilizzare per la utility Hadoop Streaming.

1

Scrivere il mappatore e il riduttore eseguibili nel linguaggio di programmazione preferito.

Seguire le istruzioni riportate nella documentazione Hadoop per scrivere i file eseguibili in streaming. I programmi devono leggere i loro dati di ingresso e uscita dai dati di input e uscita output attraverso l'output standard. Per impostazione predefinita, ogni riga di input/output rappresenta un record e la prima scheda di ogni riga viene utilizzata come separatore tra la chiave e il valore.

2

Prova gli eseguibili localmente e caricali su Amazon S3.

3

Utilizza l'interfaccia a riga di comando Amazon EMR o la console di Amazon EMR per eseguire l'applicazione.

Ogni script di mappatura viene avviato come processo separato nel cluster. Ciascun eseguibile del riduttore trasforma l'output dell'eseguibile del mappatore nell'uscita dei dati in base al flusso di lavoro.

I parametri input, output, mapper e reducer sono necessari per la maggior parte delle applicazioni di streaming. La seguente tabella descrive questi ed altri parametri opzionali.

Parametro Descrizione Richiesto
-input

Percorso dei dati di input su Amazon S3.

▬Tipo: stringa

Impostazione predefinita: nessuna

Vincolo: URI. Se non viene specificato alcun protocollo, utilizza il file system predefinito del cluster.

-output

Percorso su Amazon S3 in cui Amazon EMR carica i dati elaborati.

▬Tipo: stringa

Impostazione predefinita: nessuna

Vincolo: URI

Impostazione predefinita: se il percorso non è specificato, Amazon EMR carica i dati nel percorso specificato da input.

-mapper

Nome del mappatore eseguibile.

▬Tipo: stringa

Impostazione predefinita: nessuna

-reducer

Nome del riduttore eseguibile.

▬Tipo: stringa

Impostazione predefinita: nessuna

-cacheFile

Un percorso Amazon S3 contenente file da copiare nella directory di lavoro locale per Hadoop (principalmente per migliorare le prestazioni).

▬Tipo: stringa

Impostazione predefinita: nessuna

Vincoli: [URI]#[nome symlink da creare nella directory di lavoro]

No
-cacheArchive

File JAR da estrarre nella directory di lavoro

▬Tipo: stringa

Impostazione predefinita: nessuna

Vincoli: [URI]#[nome directory symlink da creare nella directory di lavoro]

No
-combiner

Combina risultati

▬Tipo: stringa

Impostazione predefinita: nessuna

Vincoli: nome della classe Java

No

Il seguente esempio di codice è un eseguibile di mappatura scritto in Python. Questo script fa parte dell'applicazione di esempio. WordCount

#!/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)