Invio di una fase di streaming - Amazon EMR

Invio di una fase di streaming

Questa sezione descrive le nozioni di base per l'invio di una fase di streaming a un cluster. Un'applicazione di streaming legge gli input da un ingresso standard e quindi esegue uno script o un eseguibile (chiamato mappatore) su ogni ingresso. Il risultato di ogni ingresso viene salvato localmente, tipicamente su una partizione Hadoop Distributed File System (HDFS). Dopo che tutti gli input sono stati elaborati dal mappatore, un secondo script o eseguibile (chiamato riduttore) elabora i risultati del mappatore. I risultati del riduttore vengono inviati all'output standard. È possibile concatenare una serie di fasi di Streaming, in cui l'output di una fase diventa l'input di un'altra fase.

Il mappatore e il riduttore possono essere referenziati come file oppure si può fornire una classe Java. È possibile implementare il mappatore e il riduttore in qualsiasi lingua supportata, inclusi Ruby, Perl, Python, PHP o Bash.

Invio di una fase di streaming utilizzando la console

Questo esempio descrive come utilizzare la console di Amazon EMR per inviare una fase di Streaming personalizzata a un cluster in esecuzione.

Invio di una fase di streaming
  1. Apri la console di Amazon EMR all'indirizzo https://console.aws.amazon.com/emr.

  2. In Cluster List (Elenco cluster), selezionare il nome del cluster.

  3. Scorrere fino alla sezione Steps (Fasi) ed espanderla, quindi scegliere Add step (Aggiungi fase).

  4. Nella finestra di dialogo Add Step (Aggiungi fase):

    • Per Step type (Tipo di fase), scegliere Streaming program (Programma Streaming).

    • Per Name (Nome), accettare il nome di default, ovvero Streaming program (Programma Streaming), o digitare un nuovo nome.

    • Per Mapper (Mappatore), digitare o aprire la posizione della classe del mapper in Hadoop, o un bucket S3 in cui risiede l'eseguibile del mappatore, come un programma Python. Il valore del percorso deve essere nel formato BucketName/path/MapperExecutable.

    • Per Reducer (Riduttore), digitare o aprire la posizione della classe del riduttore in Hadoop, o un bucket S3 in cui risiede l'eseguibile del riduttore, come un programma Python. Il valore del percorso deve essere nel formato BucketName/path/MapperExecutable. Amazon EMR supporta la parola chiave speciale aggregata. Per ulteriori informazioni, vedere la libreria di aggregazione fornita da Hadoop.

    • Per Input S3 location (Percorso input S3), digitare o aprire il percorso dei dati di input.

    • Per Output S3 location (Percorso S3 output), digita il nome del bucket di output Amazon S3.

    • Lasciare vuoto il campo Arguments (Argomenti).

    • Per Action on failure (Operazione in caso di errore), accettare l'opzione predefinita, ovvero Continue (Continua).

  5. Scegliere Add (Aggiungi). La fase viene visualizzata nella console con lo stato Pending (In attesa).

  6. Durante l'esecuzione della fase, lo stato passa da Pending (In attesa) a Running (In esecuzione) a Completed (Completata). Per aggiornare lo stato, scegliere l'icona Refresh (Aggiorna) sopra la colonna Actions (Operazioni).

AWS CLI

Questi esempi illustrano come utilizzare la AWS CLI per creare un cluster e inviare una fase di Streaming.

Creazione di un cluster e invio di una fase di streaming utilizzando la AWS CLI
  • Per creare un cluster e inviare una fase di streaming utilizzando AWS CLI digitare il comando seguente e sostituire myKey con il nome della coppia di chiavi di EC2. Nota che l'argomento per --files dovrebbe essere il percorso Amazon S3 della posizione dello script e gli argomenti per -mapper e -reducer dovrebbero essere i nomi dei rispettivi file di script.

    aws emr create-cluster --name "Test cluster" --release-label emr-5.36.1 --applications Name=Hue Name=Hive Name=Pig --use-default-roles \ --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \ --steps Type=STREAMING,Name="Streaming Program",ActionOnFailure=CONTINUE,Args=[--files,pathtoscripts,-mapper,mapperscript,-reducer,reducerscript,aggregate,-input,pathtoinputdata,-output,pathtooutputbucket]
    Nota

    I caratteri di continuazione della riga Linux (\) sono inclusi per la leggibilità. Possono essere rimossi o utilizzati nei comandi Linux. Per Windows, rimuoverli o sostituirli con un accento circonflesso (^).

    Quando si specifica il numero di istanze senza utilizzare il parametro --instance-groups, viene avviato un singolo nodo master e le istanze rimanenti vengono avviate come nodi principali. Tutti i nodi utilizzano il tipo di istanza specificato nel comando.

    Nota

    Se in precedenza non sono stati creati il ruolo del servizio Amazon EMR predefinito e il profilo dell'istanza EC2, digita aws emr create-default-roles per crearli prima di digitare il sottocomando create-cluster.

    Per ulteriori informazioni sull'utilizzo di comandi Amazon EMR nella AWS CLI, consulta https://docs.aws.amazon.com/cli/latest/reference/emr.