Je souhaite mettre à jour tous les nœuds d'un cluster Amazon EMR une fois que l'état BOOTSTRAPPING est terminé.
Résolution
L'action d’amorçage se produit avant qu'Amazon EMR n'installe et ne configure des applications, telles qu'Apache Hadoop et Apache Spark. Pour modifier tous les nœuds de cluster après l'installation et la configuration des applications par Amazon EMR, attachez un script d'action d’amorçage.
Mettez à jour le script Bash suivant avec les modifications que vous souhaitez appliquer à vos nœuds :
#!/bin/bash
set -xe
EMR_SECONDARY_BA_SCRIPT=$(cat <<'EOF'
while true; do
NODEPROVISIONSTATE=` sed -n '/localInstance [{]/,/[}]/{
/nodeProvisionCheckinRecord [{]/,/[}]/ {
/status: / { p }
/[}]/a
}
/[}]/a
}' /emr/instance-controller/lib/info/job-flow-state.txt | awk ' { print $2 }'`
if [ "$NODEPROVISIONSTATE" == "SUCCESSFUL" ]; then
sleep 10;
echo "Running my post provision bootstrap"
NODETYPE=$(cat /mnt/var/lib/instance-controller/extraInstanceData.json | jq -r '.instanceRole' | awk '{print tolower($0)}')
if [ "$NODETYPE" == "master" ]
then
echo "In Master"
######ENTER YOUR CODE THAT SHOULD BE EXECUTED ON PRIMARY NODE######
elif [ "$NODETYPE" == "core" ]
then
echo "In Core"
######ENTER YOUR CODE THAT SHOULD BE EXECUTED ON CORE NODE######
elif [ "$NODETYPE" == "task" ]
then
echo "In Task"
######ENTER YOUR CODE THAT SHOULD BE EXECUTED ON TASK NODE######
fi
exit;
fi
sleep 10;
done
EOF
)
echo "${EMR_SECONDARY_BA_SCRIPT}" | tee -a /tmp/emr-secondary-ba.sh
chmod u+x /tmp/emr-secondary-ba.sh
/tmp/emr-secondary-ba.sh &> /tmp/emr-secondary-ba.log &
exit 0
Remarque : Par défaut, le script précédent utilise l'utilisateur hadoop. Si vos modifications requièrent des autorisations, mettez à jour l’utilisateur vers sudo.
Après avoir mis à jour le script Bash, attachez-le à votre cluster en tant que script d'action d’amorçage.
Informations connexes
Comprendre le cycle de vie des clusters
Créer des actions d’amorçage pour installer des logiciels supplémentaires avec un cluster Amazon EMR