Invio di lavoro Pig - Amazon EMR

Invio di lavoro Pig

Questa sezione illustra l'invio di lavoro Pig a un cluster Amazon EMR. Gli esempi che seguono generano un report contenente il numero totale di byte trasferiti, un elenco dei primi 50 indirizzi IP, un elenco dei primi 50 referrer esterni e i primi 50 termini di ricerca in Bing e Google. Lo script Pig si trova nel bucket Amazon S3 s3://elasticmapreduce/samples/pig-apache/do-reports2.pig. I dati di input si trovano nel bucket Amazon S3 s3://elasticmapreduce/samples/pig-apache/input. L'output viene salvato in un bucket Amazon S3.

Invio di lavoro Pig mediante la console di Amazon EMR

Questo esempio descrive come utilizzare la console di Amazon EMR per aggiungere una fase Pig a un cluster.

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

  2. Scegliere Creare un cluster per creare un cluster con Pig installato. Per i passaggi su come creare un cluster, consulta Pianificare e configurare un cluster Amazon EMR.

  3. Aprire una finestra del terminale e utilizzare SSH nel nodo principale del cluster seguendo la procedura descritta in Connettersi al nodo principale tramite SSH. Una volta fatto questo, seguire i passaggi successivi.

    sudo mkdir -p /home/hadoop/lib/pig/ sudo aws s3 cp s3://elasticmapreduce/libs/pig/0.3/piggybank-0.3-amzn.jar /home/hadoop/lib/pig/piggybank.jar
  4. Nella console, fare clic su Cluster List (Elenco cluster) e selezionare il nome del cluster creato.

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

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

    • Per Step type (Tipo di fase), scegliere Pig program (programma Pig).

    • Per Name (Nome), accettare il nome predefinito (programma Pig) o digitare un nuovo nome.

    • Per Script S3 location (Percorso script S3), digitare il percorso dello script Pig. Ad esempio: s3://elasticmapreduce/samples/pig-apache/do-reports2.pig.

    • Per Script S3 location (Percorso script S3), digitare il percorso dei dati di input. Ad esempio: s3://elasticmapreduce/samples/pig-apache/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).

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

  8. 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). Una volta completato il passaggio, controllare il bucket Amazon S3 per confermare che i file di output della fase Pig siano presenti.

Invio di lavoro Pig mediante la AWS CLI

Per inviare una fase Pig mediante l'AWS CLI

Quando si avvia un cluster mediante l'AWS CLI utilizzare il parametro --applications per installare Pig. Per inviare una fase Pig, utilizzare il parametro --steps.

  1. Per avviare un cluster con Pig installato, digitare il comando seguente, sostituendo myKey e DOC-EXAMPLE-BUCKET/ con il nome della coppia di chiavi EC2 e del bucket Amazon S3.

    aws emr create-cluster \ --name "Test cluster" \ --log-uri s3://DOC-EXAMPLE-BUCKET/ \ --release-label emr-5.36.1 \ --applications Name=Pig \ --use-default-roles \ --ec2-attributes KeyName=myKey \ --instance-type m5.xlarge \ --instance-count 3
    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 EMR predefinito e il profilo dell'istanza EC2, digita aws emr create-default-roles per crearli prima di digitare il sottocomando create-cluster.

  2. Per inviare una fase Pig, inserire il comando seguente, sostituendo myClusterId e DOC-EXAMPLE-BUCKET con l'ID cluster e il nome del bucket Amazon S3.

    aws emr add-steps \ --cluster-id myClusterId \ --steps Type=PIG,Name="Pig Program",ActionOnFailure=CONTINUE,Args=[-f,s3://elasticmapreduce/samples/pig-apache/do-reports2.pig,-p,INPUT=s3://elasticmapreduce/samples/pig-apache/input,-p,OUTPUT=s3://DOC-EXAMPLE-BUCKET/pig-apache/output]

    Questo comando restituirà un ID fase che può essere utilizzato per controllare lo State della fase.

  3. Esegui una query sullo stato della fase con il comando describe-step.

    aws emr describe-step --cluster-id myClusterId --step-id s-1XXXXXXXXXXA

    Lo State della fase cambia da PENDING a RUNNING a COMPLETED durante la relativa esecuzione. Una volta completato il passaggio, controllare il bucket Amazon S3 per confermare che i file di output della fase Pig siano presenti.

Per ulteriori informazioni sull'utilizzo di comandi Amazon EMR nella AWS CLI, consulta la Guida di riferimento ai comandi della AWS CLI.