

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 in EKS
<a name="spark-operator-gs"></a>

Dieses Thema hilft Ihnen beim Einstieg in die Verwendung des Spark-Operators in Amazon EKS, indem Sie eine Spark-Anwendung und eine Schedule-Spark-Anwendung bereitstellen.

## Den Spark-Operator installieren
<a name="spark-operator-install"></a>

Gehen Sie wie folgt vor, um den Kubernetes-Operator für Apache Spark zu installieren.

1. Sofern noch nicht geschehen, führen die Schritte unter [Einrichten des Spark-Operators für Amazon EMR in EKS](spark-operator-setup.md) aus.

1. Authentifizieren Ihren Helm-Client in Ihrer Amazon-ECR-Registry. Ersetzen Sie im folgenden Befehl die *region-id* Werte durch Ihre bevorzugten AWS-Region Werte und den entsprechenden *ECR-registry-account* Wert für die Region auf der Seite. [Amazon-ECR-Registrierungskonten nach Regionen](docker-custom-images-tag.md#docker-custom-images-ECR)

   ```
   aws ecr get-login-password \
   --region region-id | helm registry login \
   --username AWS \
   --password-stdin ECR-registry-account.dkr.ecr.region-id.amazonaws.com
   ```

1. Installieren Sie den Spark-Operator mit dem folgenden Befehl.

   Verwenden Sie für den `--version`-Helm-Chart-Parameter Ihre Amazon-EMR-Versionskennung, wobei das `emr-`-Präfix und das Datumssuffix entfernt wurden. Geben Sie beispielsweise `emr-6.12.0-java17-latest` bei der Version `6.12.0-java17` an. Das Beispiel im folgenden Befehl verwendet die `emr-7.12.0-latest` Version, also gibt sie `7.12.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 \
     --version 7.12.0 \
     --namespace spark-operator \
     --create-namespace
   ```

   Standardmäß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 Argument `serviceAccounts.sparkoperator.name` an. Beispiel:

   ```
   --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
   ```

1. 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.12.0
   name: spark-operator-demo
   namespace: spark-operator
   revision: "1"
   status: deployed
   updated: 2023-03-14 18:20:02.721638196 +0000 UTC
   ```

1. Schließen Sie die Installation mit allen zusätzlichen Optionen ab, die Sie benötigen. Weitere Informationen finden Sie in der [https://github.com/GoogleCloudPlatform/spark-on-k8s-operator/blob/master/charts/spark-operator-chart/README.md](https://github.com/GoogleCloudPlatform/spark-on-k8s-operator/blob/master/charts/spark-operator-chart/README.md)Dokumentation zu GitHub.

## Eine Spark-Anwendung ausführen
<a name="spark-operator-run"></a>

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 in EKS 6.10.0 oder höher auszuführen.

1. Bevor Sie eine Spark-Anwendung mit dem Spark-Operator ausführen können, führen Sie die Schritte unter [Einrichten des Spark-Operators für Amazon EMR in EKS](spark-operator-setup.md) und [Den Spark-Operator installieren](#spark-operator-install) durch. 

1. Erstellen Sie eine `SparkApplication`-Aufgabendefinitions-Datei `spark-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"
   ```

1. Senden Sie jetzt die Spark-Anwendung mit dem folgenden Befehl. Dadurch wird auch ein `SparkApplication`-Objekt mit dem `spark-pi`-Namen erstellt:

   ```
   kubectl apply -f spark-pi.yaml
   ```

1. Ü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`](https://www.kubeflow.org/docs/components/spark-operator/user-guide/using-sparkapplication/) in der `spark-on-k8s-operator` Dokumentation zu GitHub.

## Amazon S3 als Speicher verwenden
<a name="spark-operator-s3-storage"></a>

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 Amazon EMR-Versionen 7.2.0 und höher verwenden, sind die Konfigurationen standardmäßig enthalten. In diesem Fall können Sie den Dateipfad auf `s3://<bucket_name>/<file_path>` statt auf `local://<file_path>` in der YAML-Datei der Spark-Anwendung festlegen. 

Reichen Sie dann die Spark-Anwendung wie gewohnt ein.