Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Créez des actions bootstrap pour installer des logiciels supplémentaires avec un cluster Amazon EMR
Vous pouvez utiliser une action d'amorçage pour installer un logiciel supplémentaire ou personnaliser la configuration des instances de cluster. Les actions Bootstrap sont des scripts qui s'exécutent sur le cluster après qu'Amazon a EMR lancé l'instance à l'aide de l'Amazon Machine Image (AMI) Amazon Linux. Les actions Bootstrap s'exécutent avant qu'Amazon n'EMRinstalle les applications que vous spécifiez lors de la création du cluster et avant que les nœuds du cluster ne commencent à traiter les données. Si vous ajoutez des nœuds à un cluster en cours d'exécution, des actions d'amorçage s'exécutent également sur ces nœuds de la même façon. Vous pouvez créer des actions amorçage personnalisées et les spécifier quand vous créez votre cluster.
La plupart des actions d'amorçage prédéfinies pour les EMR AMI versions 2.x et 3.x d'Amazon ne sont pas prises en charge dans les versions 4.x d'AmazonEMR. Par exemple, configure-Hadoop
configure-daemons
ils ne sont pas pris en charge dans la EMR version 4.x d'Amazon. Au lieu de cela, EMR la version 4.x d'Amazon fournit cette fonctionnalité de manière native. Pour plus d'informations sur la migration des actions bootstrap des EMR AMI versions 2.x et 3.x d'Amazon vers la EMR version 4.x d'Amazon, consultez la section Personnalisation de la configuration des clusters et des applications avec les versions antérieures AMI d'Amazon dans EMR le Amazon Release Guide. EMR
Principes de base de l'action d'amorçage
Les actions d'amorçage s'exécutent en tant qu'utilisateur Hadoop par défaut. Vous pouvez exécuter une action d'amorçage avec des privilèges racine en utilisant sudo
.
Toutes les interfaces EMR de gestion Amazon prennent en charge les actions bootstrap. Vous pouvez spécifier jusqu'à 16 actions de bootstrap par cluster en fournissant plusieurs bootstrap-actions
paramètres depuis la console AWS CLI, ouAPI.
Depuis la EMR console Amazon, vous pouvez éventuellement spécifier une action d'amorçage lors de la création d'un cluster.
Lorsque vous utilisez leCLI, vous pouvez transmettre des références à des scripts d'action bootstrap à Amazon EMR en ajoutant le --bootstrap-actions
paramètre lorsque vous créez le cluster à l'aide de la create-cluster
commande.
--bootstrap-actions Path="s3://
amzn-s3-demo-bucket
/filename
",Args=[arg1
,arg2
]
Si l'action bootstrap renvoie un code d'erreur différent de zéro, Amazon le EMR considère comme un échec et met fin à l'instance. Si trop d'instances échouent à leurs actions d'amorçage, Amazon EMR met fin au cluster. Si seules quelques instances échouent, Amazon EMR tente de les réaffecter et de continuer. Utilisez le code d'erreur lastStateChangeReason
du cluster pour identifier les échecs dus à une action d'amorçage.
Exécuter une action d'amorçage de manière conditionnelle
Afin de n'exécuter une action d'amorçage que sur le nœud principal, vous pouvez utiliser une action d'amorçage personnalisée avec une certaine logique pour déterminer si le nœud est principal.
#!/bin/bash if grep isMaster /mnt/var/lib/info/instance.json | grep false; then echo "This is not master node, do nothing,exiting" exit 0 fi echo "This is master, continuing to execute script" # continue with code logic for master node below
La sortie suivante sera imprimée à partir d'un nœud principal.
This is not master node, do nothing, exiting
La sortie suivante sera imprimée à partir du nœud principal.
This is master, continuing to execute script
Pour utiliser cette logique, chargez votre action d'amorçage, y compris le code ci-dessus, dans votre compartiment Amazon S3. Sur le AWS CLI, ajoutez le --bootstrap-actions
paramètre à l'aws emr
create-cluster
APIappel et spécifiez l'emplacement de votre script bootstrap comme valeur dePath
.
Actions de fin de tâche
Un script d'action d'amorçage peut créer une ou plusieurs actions de fin de tâche en écrivant des scripts dans le répertoire /mnt/var/lib/instance-controller/public/shutdown-actions/
. Lorsqu'un cluster est arrêté, tous les scripts dans ce répertoire sont exécutés en parallèle. Chaque script doit s'exécuter et s'arrêter dans un délai de 60 secondes.
L'exécution des scripts d'action d'arrêt n'est pas garantie si le nœud s'arrête avec une erreur.
Note
Lorsque vous utilisez EMR les versions 4.0 et ultérieures d'Amazon, vous devez créer manuellement le /mnt/var/lib/instance-controller/public/shutdown-actions/
répertoire sur le nœud principal. Ce répertoire n'existe pas par défaut. Toutefois, après avoir été créés, les scripts de ce répertoire s'exécutent néanmoins avant l'arrêt. Pour plus d'informations sur la connexion au nœud principal pour créer des répertoires, consultez Connectez-vous au nœud principal du EMR cluster Amazon à l'aide de SSH.
Utilisation d'actions d'amorçage personnalisées
Vous pouvez créer un script personnalisé pour effectuer une action personnalisée d'amorçage. Toutes les EMR interfaces Amazon peuvent faire référence à une action d'amorçage personnalisée.
Note
Pour de meilleures performances, nous vous recommandons de stocker les actions d'amorçage personnalisées, les scripts et les autres fichiers que vous souhaitez utiliser avec Amazon EMR dans un compartiment Amazon S3 situé dans le même compartiment Région AWS que votre cluster.
Table des matières
Ajout d'actions d'amorçage personnalisées
Utilisation d'une action d'amorçage personnalisée pour copier un objet depuis Amazon S3 vers chaque nœud
Vous pouvez utiliser une action d'amorçage pour copier les objets depuis Amazon S3 vers chaque nœud d'un cluster avant que vos applications ne soient installées. AWS CLI Il est installé sur chaque nœud d'un cluster, de sorte que votre action bootstrap peut appeler des AWS CLI commandes.
L'exemple suivant illustre un simple script d'action d'amorçage qui copie un fichier, myfile.jar
, depuis Amazon S3 vers un dossier local, /mnt1/myfolder
, sur chaque nœud de cluster. Le script est enregistré sur Amazon S3 sous le nom de fichier copymyfile.sh
avec le contenu suivant.
#!/bin/bash aws s3 cp s3://amzn-s3-demo-bucket/myfilefolder/myfile.jar /mnt1/myfolder
Lorsque vous lancez le cluster, vous spécifiez le script. L' AWS CLI exemple suivant illustre cela :
aws emr create-cluster --name "Test cluster" --release-label
emr-7.3.0
\ --use-default-roles --ec2-attributes KeyName=myKey \ --applications Name=Hive Name=Pig \ --instance-count 3 --instance-type m5.xlarge \ --bootstrap-actions Path="s3://amzn-s3-demo-bucket/myscriptfolder/copymyfile.sh"