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. |
Sì |
-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 |
Sì |
-mapper |
Nome del mappatore eseguibile. ▬Tipo: stringa Impostazione predefinita: nessuna |
Sì |
-reducer |
Nome del riduttore eseguibile. ▬Tipo: stringa Impostazione predefinita: nessuna |
Sì |
-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)