Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Guida introduttiva all'operatore Spark per Amazon su EMR EKS
Questo argomento ti aiuta a iniziare a utilizzare l'operatore Spark su Amazon EKS distribuendo un'applicazione Spark e un'applicazione Schedule Spark.
Installazione dell'operatore Spark
Utilizza la procedura seguente per installare l'operatore Kubernetes per Apache Spark.
-
Se non lo hai già fatto, completa le fasi in Configurazione dell'operatore Spark per Amazon su EMR EKS.
-
Autentica il tuo client Helm nel registro AmazonECR. Nel comando seguente, sostituisci il
region-id
valori con i tuoi preferiti Regione AWS e i corrispondentiECR-registry-account
valore per la regione dalla Account ECR del registro Amazon per regione pagina.aws ecr get-login-password \ --region
region-id
| helm registry login \ --username AWS \ --password-stdinECR-registry-account
.dkr.ecr.region-id
.amazonaws.com -
Installa l'operatore Spark con il comando seguente.
Per il
--version
parametro Helm chart, usa la tua etichetta di EMR rilascio Amazon con ilemr-
prefisso e il suffisso della data rimossi. Ad esempio, con il rilascioemr-6.12.0-java17-latest
, specifica6.12.0-java17
. L'esempio nel comando seguente utilizza il rilascioemr-7.2.0-latest
, quindi specifica7.2.0
per il grafico 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-namespacePer impostazione predefinita, il comando crea un account di servizio
emr-containers-sa-spark-operator
per l'operatore Spark. Per utilizzare un account di servizio diverso, fornisci l'argomentoserviceAccounts.sparkoperator.name
. Per esempio:--set serviceAccounts.sparkoperator.name
my-service-account-for-spark-operator
Se desideri utilizzare il dimensionamento automatico verticale con l'operatore Spark aggiungi la seguente riga al comando di installazione per consentire i webhook per l'operatore:
--set webhook.enable=true
-
Verifica di aver installato il grafico Helm con il comando
helm list
:helm list --namespace spark-operator -o yaml
Il comando
helm list
dovrebbe restituire le informazioni sul rilascio del grafico Helm appena implementato: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 -
Completa l'installazione con tutte le opzioni aggiuntive necessarie. Per ulteriori informazioni, consulta la documentazione su.
spark-on-k8s-operator
GitHub
Esecuzione di un'applicazione Spark
L'operatore Spark è supportato con Amazon EMR 6.10.0 o versioni successive. Quando installi l'operatore Spark, viene creato per impostazione predefinita l'account di servizio emr-containers-sa-spark
per eseguire le applicazioni Spark. Utilizza i seguenti passaggi per eseguire un'applicazione Spark con l'operatore Spark EMR su Amazon alla versione EKS 6.10.0 o successiva.
-
Prima di poter eseguire un'applicazione Spark con l'operatore Spark, completa le fasi indicate in Configurazione dell'operatore Spark per Amazon su EMR EKS e Installazione dell'operatore Spark.
-
Crea un file
spark-pi.yaml
di definizioneSparkApplication
con il seguente contenuto di esempio: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"
-
A questo punto, invia l'applicazione Spark con il comando seguente. L'operazione creerà anche un oggetto
SparkApplication
denominatospark-pi
:kubectl apply -f spark-pi.yaml
-
Controlla gli eventi dell'oggetto
SparkApplication
con il comando seguente:kubectl describe sparkapplication spark-pi --namespace spark-operator
Per maggiori informazioni sull'invio di applicazioni a Spark tramite l'operatore Spark, consulta Using a nella documentazione su. SparkApplication
spark-on-k8s-operator
GitHub
Usa Amazon S3 per lo storage
Per utilizzare Amazon S3 come opzione di archiviazione dei file, aggiungi le seguenti configurazioni al file. YAML
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
Se utilizzi le EMR versioni di Amazon 7.2.0 e successive, le configurazioni sono incluse per impostazione predefinita. In tal caso, puoi impostare il percorso del file s3://
anziché <bucket_name>
/<file_path>
local://
nel file dell'applicazione Spark. YAML <file_path>
Quindi invia l'applicazione Spark normalmente.