Soumission d'une étape JAR personnalisée
Un fichier JAR personnalisé exécute un programme Java compilé que vous pouvez charger vers Amazon S3. Vous devez compiler le programme en fonction de la version d'Hadoop que vous voulez lancer, et soumettre une étape CUSTOM_JAR
à votre cluster Amazon EMR. Pour plus d'informations sur la compilation d'un fichier JAR, consultez Créer des fichiers binaires à l'aide d'Amazon EMR.
Pour plus d'informations sur la création d'une application Hadoop MapReduce, consultez le Tutoriel MapReduce
Cette section présente les principes de base de la soumission d'une étape JAR personnalisée dans Amazon EMR. La soumission d'une étape JAR personnalisée vous permet d'écrire un script pour traiter vos données à l'aide du langage de programmation Java.
Soumettre une étape JAR personnalisée à l'aide de la console
Cet exemple décrit comment utiliser la console Amazon EMR pour soumettre une étape JAR personnalisée à un cluster en cours d'exécution.
Pour soumettre une étape JAR personnalisée à l'aide de la console
Ouvrez la console Amazon EMR à l'adressehttps://console.aws.amazon.com/emr
. -
Dans la Liste de clusters, sélectionnez le nom de votre cluster.
-
Faites défiler l'affichage jusqu'à la section Étapes et développez-la, puis choisissez Ajouter une étape.
-
Dans la boîte de dialogue Ajouter une étape :
-
Pour Type d'étape, choisissez JAR personnalisé.
-
Pour Nom, acceptez le nom par défaut (JAR personnalisé) ou tapez un nouveau nom.
-
Pour JAR S3 location (Emplacement S3 JAR), tapez ou accédez à l'emplacement de votre fichier JAR. L'emplacement JAR peut-être un chemin dans S3 ou une classe Java entièrement qualifiée dans le classpath.
-
Pour Arguments, tapez les arguments requis sous forme de chaînes séparées par des espaces ou laissez le champ vide.
-
Pour Action sur échec, acceptez l'option par défaut (Continuer).
-
-
Choisissez Ajouter. L'étape s'affiche dans la console avec le statut En suspens.
-
Le statut de l'étape passe de Pending (En suspens) à Running (En cours d'exécution) puis à Completed (Terminé), au fur et à mesure de son exécution. Pour mettre à jour l'état, choisissez l'icône d'actualisation au-dessus de la colonne Actions.
Lancement d'un cluster et soumission d'une étape JAR personnalisée à l'aide de l'AWS CLI
Pour lancer un cluster et soumettre une étape JAR personnalisée à l'aide de l'AWS CLI
Pour lancer un cluster et soumettre une étape JAR personnalisée à l'aide de l'AWS CLI, tapez la sous-commande create-cluster
avec le paramètre --steps
.
-
Pour lancer un cluster et soumettre une étape JAR personnalisée, tapez la commande suivante, remplacez
myKey
par le nom de votre paire de clés EC2 et remplacezmybucket
par le nom du compartiment.aws emr create-cluster --name "
Test cluster
" --release-labelemr-5.36.1
\ --applications Name=Hue
Name=Hive
Name=Pig
--use-default-roles \ --ec2-attributes KeyName=myKey
--instance-typem5.xlarge
--instance-count3
\ --steps Type=CUSTOM_JAR
,Name="Custom JAR Step
",ActionOnFailure=CONTINUE
,Jar=pathtojarfile
,Args=["pathtoinputdata
","pathtooutputbucket
","arg1
","arg2
"]Note
Les caractères de continuation de ligne Linux (\) sont inclus pour des raisons de lisibilité. Ils peuvent être supprimés ou utilisés dans les commandes Linux. Pour Windows, supprimez-les ou remplacez-les par un caret (^).
Lorsque vous spécifiez le nombre d'instances sans le paramètre
--instance-groups
, un seul nœud primaire est lancé et les instances restantes sont lancées en tant que nœuds principaux. Tous les nœuds utilisent le type d'instance que vous spécifiez dans la commande.Note
Si vous n'avez pas encore créé le rôle de service Amazon EMR par défaut et le profil d'instance EC2, tapez
aws emr create-default-roles
pour les créer avant de taper la sous-commandecreate-cluster
.Pour plus d'informations sur l'utilisation des commandes Amazon EMR dans l'interface AWS CLI, consultez https://docs.aws.amazon.com/cli/latest/reference/emr.
Dépendances tierces
Parfois, il peut être nécessaire d'inclure dans le chemin de classe MapReduce les fichiers JAR à utiliser avec votre programme. Vous avez deux options pour cela :
-
Incluez
--libjars s3://
dans les options de l'étape pour la procédure dans Lancement d'un cluster et soumission d'une étape JAR personnalisée à l'aide de l'AWS CLI.URI_to_JAR
-
Lancez le cluster avec un paramètre
mapreduce.application.classpath
modifié dansmapred-site.xml
. Utilisez la classification de configurationmapred-site
. Pour créer le cluster avec l'étape à l'aide de l'AWS CLI, cela se présente comme suit :aws emr create-cluster --release-label
emr-5.36.1
\ --applications Name=Hue
Name=Hive
Name=Pig
--use-default-roles \ --instance-type m5.xlarge --instance-count 2 --ec2-attributes KeyName=myKey
\ --steps Type=CUSTOM_JAR
,Name="Custom JAR Step
",ActionOnFailure=CONTINUE
,Jar=pathtojarfile
,Args=["pathtoinputdata
","pathtooutputbucket
","arg1
","arg2
"] \ --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.jsonmyConfig.json
:[ { "Classification": "mapred-site", "Properties": { "mapreduce.application.classpath": "
path1
,path2
" } } ]La liste séparée par des virgules des chemins d'accès doit être ajoutée au chemin de classe pour la JVM de chaque tâche.