Comment mettre à jour tous les nœuds Amazon EMR après la phase d'amorçage ?

Date de la dernière mise à jour : 03/12/2020

Comment puis-je mettre à jour tous les nœuds d'un cluster Amazon EMR une fois l'état EN COURS D’AMORÇAGE est terminé ?

Brève description

La phase d'amorçage se produit avant qu'Amazon EMR installe et configure des applications telles qu’Apache Hadoop et Apache Spark. Pour apporter des modifications supplémentaires sur tous les nœuds de cluster après l'installation et la configuration des applications par Amazon EMR, exécutez une action d'amorçage qui télécharge et exécute un autre script.

Résolution

1.    Créez un script bash qui spécifie les modifications que vous souhaitez apporter à tous les nœuds de cluster. Reportez-vous aux exemples suivants.

Exemple 1 : Ce script attend qu'un fichier de configuration (/etc/hadoop/conf/hadoop-env.sh) soit disponible, puis effectue des travaux supplémentaires.

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

Exemple 2 : Ce script attend que le cluster EMR passe à l'état EN ATTENTE avant d'implémenter une personnalisation supplémentaire. Cela permet au cluster EMR de terminer l'installation et la configuration de Hadoop et d'autres applications.

#!/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.    Lancez un cluster EMR et ajoutez une action d'amorçage similaire à ce qui suit. Ce script télécharge le script que vous avez créé à l'étape précédente (script_b.sh), puis l'exécute en arrière-plan.

#!/bin/bash
aws s3 cp s3://doc-example-bucket/script_b.sh .
chmod +x script_b.sh
nohup ./script_b.sh &>/dev/null &

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?