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.
Commencer à utiliser l'opérateur Spark pour Amazon EMR sur EKS
Cette rubrique vous aide à commencer à utiliser l'opérateur Spark sur Amazon EKS en déployant une application Spark et une application Schedule Spark.
Installation de l'opérateur Spark
Procédez comme suit pour installer l'opérateur Kubernetes pour Apache Spark.
-
Si vous ne l'avez pas déjà fait, suivez les étapes de Configuration de l'opérateur Spark pour Amazon EMR sur EKS.
-
Authentifiez votre client Helm auprès du ECR registre Amazon. Dans la commande suivante, remplacez
region-id
valeurs avec vos préférences Région AWS, et les valeurs correspondantesECR-registry-account
valeur de la région indiquée Comptes ECR de registre Amazon par région sur la page.aws ecr get-login-password \ --region
region-id
| helm registry login \ --username AWS \ --password-stdinECR-registry-account
.dkr.ecr.region-id
.amazonaws.com -
Installez l'opérateur Spark à l'aide de la commande suivante.
Pour le
--version
paramètre du graphique Helm, utilisez votre étiquette de EMR version Amazon avec leemr-
préfixe et le suffixe de date supprimés. Par exemple, pour la versionemr-6.12.0-java17-latest
, spécifiez6.12.0-java17
. L'exemple de la commande ci-dessous utilise la versionemr-7.2.0-latest
, elle spécifie donc7.2.0
pour les Charts de Helm--version
.helm install spark-operator-demo \ oci://895885662937.dkr.ecr.
region-id
.amazonaws.com/spark-operator \ --set emrContainers.awsRegion=region-id
\ --version7.2.0
\ --namespace spark-operator \ --create-namespacePar défaut, la commande crée un compte de service
emr-containers-sa-spark-operator
pour l'opérateur Spark. Pour utiliser un autre compte de service, saisissez l'argumentserviceAccounts.sparkoperator.name
. Par exemple :--set serviceAccounts.sparkoperator.name
my-service-account-for-spark-operator
Si vous souhaitez utiliser l'autoscaling vertical avec l'opérateur Spark, ajoutez la ligne suivante à la commande d'installation pour autoriser les webhooks pour l'opérateur :
--set webhook.enable=true
-
Vérifiez que vous avez installé les Charts de Helm à l'aide de la commande
helm list
:helm list --namespace spark-operator -o yaml
La commande
helm list
doit vous renvoyer les informations relatives à la version des Charts de Helm qui vient d'être déployée :app_version: v1beta2-1.3.8-3.1.1 chart: spark-operator-
7.2.0
name: spark-operator-demo namespace: spark-operator revision: "1" status: deployed updated: 2023-03-14 18:20:02.721638196 +0000 UTC -
Terminez l'installation avec toutes les options supplémentaires dont vous avez besoin. Pour plus d'informations, consultez la
spark-on-k8s-operator
documentation sur GitHub.
Exécution d'une application Spark
L'opérateur Spark est pris en charge par Amazon EMR 6.10.0 ou version ultérieure. Lorsque vous installez l'opérateur Spark, il crée le compte de service emr-containers-sa-spark
pour exécuter les applications Spark par défaut. Suivez les étapes ci-dessous pour exécuter une application Spark avec l'opérateur Spark EMR sur Amazon EKS 6.10.0 ou version ultérieure.
-
Pour pouvoir exécuter une application Spark à l'aide de l'opérateur Spark, suivez les étapes indiquées dans Configuration de l'opérateur Spark pour Amazon EMR sur EKS et Installation de l'opérateur Spark.
-
Créez un fichier de définition
SparkApplication
spark-pi.yaml
avec le contenu suivant :apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: spark-pi namespace: spark-operator spec: type: Scala mode: cluster image: "895885662937.dkr.ecr.us-west-2.amazonaws.com/spark/emr-6.10.0:latest" imagePullPolicy: Always mainClass: org.apache.spark.examples.SparkPi mainApplicationFile: "local:///usr/lib/spark/examples/jars/spark-examples.jar" sparkVersion: "3.3.1" restartPolicy: type: Never volumes: - name: "test-volume" hostPath: path: "/tmp" type: Directory driver: cores: 1 coreLimit: "1200m" memory: "512m" labels: version: 3.3.1 serviceAccount: emr-containers-sa-spark volumeMounts: - name: "test-volume" mountPath: "/tmp" executor: cores: 1 instances: 1 memory: "512m" labels: version: 3.3.1 volumeMounts: - name: "test-volume" mountPath: "/tmp"
-
Maintenant, soumettez l'application Spark à l'aide de la commande suivante. Cela créera également un objet
SparkApplication
nomméspark-pi
:kubectl apply -f spark-pi.yaml
-
Vérifiez les événements de l'objet
SparkApplication
à l'aide de la commande suivante :kubectl describe sparkapplication spark-pi --namespace spark-operator
Pour plus d'informations sur l'envoi d'applications à Spark via l'opérateur Spark, consultez la section Utiliser un SparkApplication
spark-on-k8s-operator
documentation sur GitHub.
Utiliser Amazon S3 pour le stockage
Pour utiliser Amazon S3 comme option de stockage de fichiers, ajoutez les configurations suivantes à votre YAML fichier.
hadoopConf: # EMRFS filesystem fs.s3.customAWSCredentialsProvider: com.amazonaws.auth.WebIdentityTokenCredentialsProvider fs.s3.impl: com.amazon.ws.emr.hadoop.fs.EmrFileSystem fs.AbstractFileSystem.s3.impl: org.apache.hadoop.fs.s3.EMRFSDelegate fs.s3.buffer.dir: /mnt/s3 fs.s3.getObject.initialSocketTimeoutMilliseconds: "2000" mapreduce.fileoutputcommitter.algorithm.version.emr_internal_use_only.EmrFileSystem: "2" mapreduce.fileoutputcommitter.cleanup-failures.ignored.emr_internal_use_only.EmrFileSystem: "true" sparkConf: # Required for EMR Runtime spark.driver.extraClassPath: /usr/lib/hadoop-lzo/lib/*:/usr/lib/hadoop/hadoop-aws.jar:/usr/share/aws/aws-java-sdk/*:/usr/share/aws/emr/emrfs/conf:/usr/share/aws/emr/emrfs/lib/*:/usr/share/aws/emr/emrfs/auxlib/*:/usr/share/aws/emr/security/conf:/usr/share/aws/emr/security/lib/*:/usr/share/aws/hmclient/lib/aws-glue-datacatalog-spark-client.jar:/usr/share/java/Hive-JSON-Serde/hive-openx-serde.jar:/usr/share/aws/sagemaker-spark-sdk/lib/sagemaker-spark-sdk.jar:/home/hadoop/extrajars/* spark.driver.extraLibraryPath: /usr/lib/hadoop/lib/native:/usr/lib/hadoop-lzo/lib/native:/docker/usr/lib/hadoop/lib/native:/docker/usr/lib/hadoop-lzo/lib/native spark.executor.extraClassPath: /usr/lib/hadoop-lzo/lib/*:/usr/lib/hadoop/hadoop-aws.jar:/usr/share/aws/aws-java-sdk/*:/usr/share/aws/emr/emrfs/conf:/usr/share/aws/emr/emrfs/lib/*:/usr/share/aws/emr/emrfs/auxlib/*:/usr/share/aws/emr/security/conf:/usr/share/aws/emr/security/lib/*:/usr/share/aws/hmclient/lib/aws-glue-datacatalog-spark-client.jar:/usr/share/java/Hive-JSON-Serde/hive-openx-serde.jar:/usr/share/aws/sagemaker-spark-sdk/lib/sagemaker-spark-sdk.jar:/home/hadoop/extrajars/* spark.executor.extraLibraryPath: /usr/lib/hadoop/lib/native:/usr/lib/hadoop-lzo/lib/native:/docker/usr/lib/hadoop/lib/native:/docker/usr/lib/hadoop-lzo/lib/native
Si vous utilisez les EMR versions 7.2.0 et supérieures d'Amazon, les configurations sont incluses par défaut. Dans ce cas, vous pouvez définir le chemin du fichier sur le fichier d'application Spark au s3://
lieu de le définir <bucket_name>
/<file_path>
local://
dans le YAML fichier d'application Spark. <file_path>
Soumettez ensuite l'application Spark comme d'habitude.