Cette rubrique explique comment vous connecter à la console E-MapReduce (EMR) avec votre compte Alibaba Cloud, créer un cluster EMR on ACK et exécuter une tâche.
Notes
Vous êtes responsable de la gestion et de la configuration de l'environnement d'exécution de votre code.
-
Dans les exemples de cette rubrique, le fichier JAR est directement intégré à l'image. Si vous utilisez votre propre fichier JAR, vous pouvez le télécharger vers Object Storage Service (OSS). Pour plus d'informations, consultez Téléchargement simple.
Remplacez
local:///opt/spark/examples/spark-examples.jardans la commande par le chemin OSS de votre fichier JAR. Le format du chemin estoss://<yourBucketName>/<path>.jar.
Prérequis
Avant de créer un cluster EMR on ACK, effectuez les étapes suivantes dans la console Container Service for Kubernetes (ACK) :
Créez un cluster Kubernetes. Pour plus d'informations, consultez Créer un cluster ACK dédié (nouvelles instances non disponibles) ou Créer un cluster ACK managé.
Attachez les stratégies AliyunOSSFullAccess et AliyunDLFFullAccess. Pour plus d'informations, consultez Accorder des stratégies OSS et DLF.
Pour stocker des fichiers JAR dans Object Storage Service (OSS), vous devez d'abord activer OSS. Pour plus d'informations, consultez Activer OSS.
Étape 1 : Accorder des autorisations de rôle
Avant d'utiliser EMR on ACK, accordez le rôle système par défaut AliyunEMROnACKDefaultRole à votre compte Alibaba Cloud dans la console EMR on ACK. Pour plus d'informations, consultez Accorder des autorisations de rôle à un compte Alibaba Cloud.
Étape 2 : Créer un cluster
Créez un cluster Spark sur Kubernetes. Pour savoir comment créer un cluster, consultez Créer un cluster.
Connectez-vous à la console EMR on ACK.
Sur la page EMR on ACK, cliquez sur Create Cluster.
-
Sur la page E-MapReduce on ACK, configurez les paramètres du cluster.
Paramètre
Exemple
Description
Region
China (Hangzhou)
La région où le cluster est déployé. Vous ne pouvez pas modifier la région après la création du cluster.
Cluster Type
Spark
Un moteur de traitement big data distribué polyvalent qui offre des fonctionnalités telles que l'ETL, le traitement par lots hors ligne et la modélisation des données.
ImportantAprès avoir créé un cluster Spark, si vous souhaitez l'associer à un cluster Shuffle Service, la version majeure du produit doit correspondre à celle du cluster Shuffle Service associé. Par exemple, un cluster Spark EMR-5.x-ack ne peut être associé qu'à un cluster Shuffle Service EMR-5.x-ack.
Product Version
EMR-5.6.0-ack
La dernière version logicielle est utilisée par défaut.
Component Version
SPARK (3.2.1)
Les composants et leurs versions disponibles pour le type de cluster sélectionné.
ACK cluster
Emr-ack
Sélectionnez un cluster ACK existant ou créez-en un dans la console ACK.
ImportantUn cluster ACK ne peut pas être associé à plusieurs clusters EMR on ACK du même type.
Cliquez sur Configure Dedicated Nodes pour configurer des nœuds dédiés pour EMR. Cela ajoute des taints et des libellés spécifiques à EMR à un pool de nœuds ou à des nœuds spécifiques.
RemarqueNous recommandons de configurer des nœuds dédiés à l'aide d'un pool de nœuds. Si aucun pool de nœuds n'existe, créez-en un. Pour plus d'informations, consultez Créer un pool de nœuds et Pools de nœuds.
OSS bucket
oss-spark-test
Sélectionnez un bucket existant ou créez-en un dans la console Object Storage Service (OSS).
Cluster Name
Emr-Spark
Le nom du cluster. Il doit comporter entre 1 et 64 caractères et peut contenir des caractères chinois, des lettres, des chiffres, des traits d'union (-) et des traits de soulignement (_).
-
Cliquez sur create.
Le cluster est créé lorsque son statut passe à Running.
Étape 3 : Soumettre une tâche
Cette section explique comment soumettre une tâche Spark à l'aide d'une Custom Resource Definition (CRD). Pour plus d'informations sur Spark, consultez la documentation open source Quick Start et sélectionnez la langue et la version appropriées.
Pour plus d'informations sur la soumission de tâches, consultez les rubriques suivantes :
Connectez-vous à un cluster Alibaba Cloud Container Service for Kubernetes (ACK) à l'aide de kubectl. Pour plus d'informations, consultez Se connecter à un cluster ACK à l'aide de kubectl.
-
Créez un fichier de tâche nommé spark-pi.yaml. Le code suivant montre le contenu du fichier :
apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: spark-pi-simple spec: type: Scala sparkVersion: 3.2.1 mainClass: org.apache.spark.examples.SparkPi mainApplicationFile: "local:///opt/spark/examples/spark-examples.jar" arguments: - "1000" driver: cores: 1 coreLimit: 1000m memory: 4g executor: cores: 1 coreLimit: 1000m memory: 8g memoryOverhead: 1g instances: 1Pour obtenir des informations sur les champs du code, consultez spark-on-k8s-operator.
RemarqueVous pouvez spécifier un nom de fichier personnalisé. Dans cet exemple, spark-pi.yaml est utilisé.
Dans cet exemple, Spark 3.2.1 pour EMR V5.6.0 est utilisé. Si vous utilisez une autre version de Spark, configurez le paramètre sparkVersion en fonction de vos besoins métier.
-
Exécutez la commande suivante pour soumettre une tâche :
kubectl apply -f spark-pi.yaml --namespace <Namespace in which the cluster resides>Remplacez
<Namespace in which the cluster resides>par le namespace correspondant à vos besoins métier. Pour afficher le namespace, connectez-vous à la console EMR et accédez à l'onglet Cluster Details.Les informations suivantes sont renvoyées :
sparkapplication.sparkoperator.k8s.io/spark-pi-simple createdRemarquespark-pi-simpleest le nom de la tâche Spark soumise. Facultatif. Consultez les informations sur la tâche Spark soumise dans l'onglet Job Details.
(Facultatif) Étape 4 : Libérer le cluster
Si vous n'avez plus besoin du cluster, libérez-le pour réduire les coûts.
Sur la page EMR on ACK, localisez le cluster et cliquez sur Release dans la colonne Actions.
Dans la boîte de dialogue Release Cluster, cliquez sur OK.
Documents connexes
Affichez un résumé de vos clusters : Afficher les informations du cluster.
Consultez les tâches de votre cluster : Afficher la liste des tâches.