Desidero aggiornare tutti i nodi in un cluster Amazon EMR dopo che lo stato BOOTSTRAPPING è completo.
Breve descrizione
La fase di bootstrap si verifica prima che Amazon EMR installi e configuri applicazioni come Apache Hadoop e Apache Spark. Per apportare ulteriori modifiche in tutti i nodi del cluster dopo che le applicazioni sono state installate e configurate da Amazon EMR, è possibile eseguire un'azione di bootstrap per scaricare ed eseguire un altro script.
Risoluzione
1. Crea uno script bash per specificare le modifiche da apportare in tutti i nodi del cluster. Fai riferimento ai seguenti esempi.
Esempio 1: Questo script attende che un file di configurazione (/etc/hadoop/conf/hadoop-env.sh) diventi disponibile, quindi esegue ulteriori operazioni.
#!/bin/bash
#
# This is an example of script_b.sh
#
while [ ! -f /etc/hadoop/conf/hadoop-env.sh ]
do
sleep 1
done
#
# Now the file is available, do your work here
#
exit 0
Esempio 2: Questo script attende che il cluster EMR entri nello stato WAITING prima di implementare una personalizzazione aggiuntiva. Ciò consente al cluster EMR di completare l'installazione e la configurazione di Hadoop e di altre applicazioni.
#!/bin/bash
#
# This is an example of script_b.sh
#
# Wait for EMR provisioning to become successful.
#
while [[ $(sed '/localInstance {/{:1; /}/!{N; b1}; /nodeProvision/p}; d' /emr/instance-controller/lib/info/job-flow-state.txt | sed '/nodeProvisionCheckinRecord {/{:1; /}/!{N; b1}; /status/p}; d' | awk '/SUCCESSFUL/' | xargs) != "status: SUCCESSFUL" ]];
do
sleep 1
done
#
# Now the EMR cluster is ready. Do your work here.
#
exit 0
2. Avvia un cluster EMR e aggiungi un'azione di bootstrap simile alla seguente. Questo script scarica lo script creato al passaggio precedente (script\ _b.sh), quindi lo esegue in background.
#!/bin/bash
aws s3 cp s3://doc-example-bucket/script_b.sh .
chmod +x script_b.sh
nohup ./script_b.sh &>/dev/null &
Informazioni correlate
Comprendere il ciclo di vita del cluster