Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erste Schritte mit dem Spark-Operator für Amazon EMR auf EKS
Dieses Thema hilft Ihnen beim Einstieg in die Verwendung des Spark-Operators auf Amazon, EKS indem Sie eine Spark-Anwendung und eine Schedule-Spark-Anwendung bereitstellen.
Den Spark-Operator installieren
Gehen Sie wie folgt vor, um den Kubernetes-Operator für Apache Spark zu installieren.
-
Sofern noch nicht geschehen, führen die Schritte unter Einrichtung des Spark-Operators für Amazon EMR auf EKS aus.
-
Authentifizieren Sie Ihren Helm-Client bei der ECR Amazon-Registrierung. Ersetzen Sie im folgenden Befehl den
region-id
Werte durch Ihre bevorzugten AWS-Region und die entsprechendenECR-registry-account
Wert für die Region von der ECRAmazon-Registrierungskonten nach Regionen Seite.aws ecr get-login-password \ --region
region-id
| helm registry login \ --username AWS \ --password-stdinECR-registry-account
.dkr.ecr.region-id
.amazonaws.com -
Installieren Sie den Spark-Operator mit dem folgenden Befehl.
Verwenden Sie für den
--version
Helm-Diagrammparameter Ihr EMR Amazon-Release-Label, bei dem dasemr-
Präfix und das Datumssuffix entfernt wurden. Geben Sie beispielsweiseemr-6.12.0-java17-latest
bei der Version6.12.0-java17
an. Das Beispiel im folgenden Befehl verwendet dieemr-7.2.0-latest
Version, also gibt sie7.2.0
für das Helm-Chart--version
an.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-namespaceStandardmäßig erstellt der Befehl ein Servicekonto
emr-containers-sa-spark-operator
für den Spark-Operator. Um ein anderes Servicekonto zu verwenden, geben Sie das ArgumentserviceAccounts.sparkoperator.name
an. Beispielsweise:--set serviceAccounts.sparkoperator.name
my-service-account-for-spark-operator
Wenn Sie das vertikale Auto Scaling mit dem Spark-Operator verwenden möchten, fügen Sie dem Installationsbefehl die folgende Zeile hinzu, um Webhooks für den Operator zuzulassen:
--set webhook.enable=true
-
Vergewissern Sie sich, dass Sie das Helm-Chart mit dem folgenden
helm list
-Befehl installiert haben:helm list --namespace spark-operator -o yaml
Der
helm list
-Befehl sollte Ihre neu bereitgestellten Helm-Chart-Versionsinformationen zurückgeben: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 -
Schließen Sie die Installation mit allen zusätzlichen Optionen ab, die Sie benötigen. Weitere Informationen finden Sie in der
spark-on-k8s-operator
Dokumentation unter. GitHub
Eine Spark-Anwendung ausführen
Der Spark-Operator wird mit Amazon EMR 6.10.0 oder höher unterstützt. Wenn Sie den Spark-Operator installieren, erstellt er standardmäßig das Servicekonto emr-containers-sa-spark
für die Ausführung von Spark-Anwendungen. Gehen Sie wie folgt vor, um eine Spark-Anwendung mit dem Spark-Operator auf Amazon EMR auf EKS Version 6.10.0 oder höher auszuführen.
-
Bevor Sie eine Spark-Anwendung mit dem Spark-Operator ausführen können, führen Sie die Schritte unter Einrichtung des Spark-Operators für Amazon EMR auf EKS und Den Spark-Operator installieren durch.
-
Erstellen Sie eine
SparkApplication
-Aufgabendefinitions-Dateispark-pi.yaml
mit dem folgenden Beispielinhalt: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"
-
Senden Sie jetzt die Spark-Anwendung mit dem folgenden Befehl. Dadurch wird auch ein
SparkApplication
-Objekt mit demspark-pi
-Namen erstellt:kubectl apply -f spark-pi.yaml
-
Überprüfen Sie die Ereignisse für das
SparkApplication
-Objekt mit dem folgenden Befehl:kubectl describe sparkapplication spark-pi --namespace spark-operator
Weitere Informationen zum Einreichen von Anwendungen an Spark über den Spark-Operator finden Sie unter Verwenden von a SparkApplication
spark-on-k8s-operator
Dokumentation zu GitHub.
Amazon S3 als Speicher verwenden
Um Amazon S3 als Dateispeicheroption zu verwenden, fügen Sie Ihrer YAML Datei die folgenden Konfigurationen hinzu.
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
Wenn Sie EMR Amazon-Versionen 7.2.0 und höher verwenden, sind die Konfigurationen standardmäßig enthalten. In diesem Fall können Sie den Dateipfad auf s3://
statt auf <bucket_name>
/<file_path>
local://
in der YAML Spark-Anwendungsdatei festlegen. <file_path>
Reichen Sie dann den Spark-Antrag wie gewohnt ein.