Guida introduttiva all'operatore Spark per Amazon su EMR EKS - Amazon EMR

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.

  1. Se non lo hai già fatto, completa le fasi in Configurazione dell'operatore Spark per Amazon su EMR EKS.

  2. Autentica il tuo client Helm nel registro AmazonECR. Nel comando seguente, sostituisci il region-id valori con i tuoi preferiti Regione AWS e i corrispondenti ECR-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-stdin ECR-registry-account.dkr.ecr.region-id.amazonaws.com
  3. Installa l'operatore Spark con il comando seguente.

    Per il --version parametro Helm chart, usa la tua etichetta di EMR rilascio Amazon con il emr- prefisso e il suffisso della data rimossi. Ad esempio, con il rilascio emr-6.12.0-java17-latest, specifica 6.12.0-java17. L'esempio nel comando seguente utilizza il rilascio emr-7.2.0-latest, quindi specifica 7.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 \ --version 7.2.0 \ --namespace spark-operator \ --create-namespace

    Per 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'argomento serviceAccounts.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
  4. 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
  5. 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.

  1. 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.

  2. Crea un file spark-pi.yaml di definizione SparkApplication 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"
  3. A questo punto, invia l'applicazione Spark con il comando seguente. L'operazione creerà anche un oggetto SparkApplication denominato spark-pi:

    kubectl apply -f spark-pi.yaml
  4. 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://<bucket_name>/<file_path> anziché local://<file_path> nel file dell'applicazione Spark. YAML

Quindi invia l'applicazione Spark normalmente.