

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Conceitos básicos do operador do Spark para o Amazon EMR no EKS
<a name="spark-operator-gs"></a>

Este tópico ajuda você a começar a usar o operador do Spark no Amazon EKS ao implantar uma aplicação do Spark e uma aplicação programada do Spark.

## Instalação do operador do Spark
<a name="spark-operator-install"></a>

Use as etapas apresentadas a seguir para instalar o operador do Kubernetes para Apache Spark.

1. Caso ainda não tenha feito, conclua as etapas em [Configuração do operador do Spark para o Amazon EMR no EKS](spark-operator-setup.md).

1. Autentique seu cliente Helm no registro do Amazon ECR. No comando a seguir, substitua {{region-id}} os valores pelos seus preferidos Região da AWS e pelo {{ECR-registry-account}} valor correspondente para a Região na [Contas de registro do Amazon ECR por região](docker-custom-images-tag.md#docker-custom-images-ECR) página.

   ```
   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. Instale o operador do Spark com o comando apresentado a seguir.

   Para o parâmetro `--version` do chart do Helm, use o rótulo de versão do Amazon EMR com o prefixo `emr-` e o sufixo de data removidos. Por exemplo, com a versão `emr-6.12.0-java17-latest`, especifique `6.12.0-java17`. O exemplo com o comando apresentado a seguir usa a versão `emr-7.13.0-latest`, portanto, especifica `7.13.0` para o chart do Helm `--version`.

   ```
   helm install spark-operator-demo \
     oci://895885662937.dkr.ecr.{{region-id}}.amazonaws.com/spark-operator \
     --set emrContainers.awsRegion={{region-id}} \
     --version {{7.13.0}} \
     --namespace spark-operator \
     --create-namespace
   ```

   Por padrão, o comando cria uma conta de serviço `emr-containers-sa-spark-operator` para o operador do Spark. Para usar uma conta de serviço diferente, forneça o argumento `serviceAccounts.sparkoperator.name`. Por exemplo:

   ```
   --set serviceAccounts.sparkoperator.name {{my-service-account-for-spark-operator}}
   ```

   Para [usar o escalonamento automático vertical com o operador Spark](), adicione a seguinte linha ao comando de instalação para permitir webhooks para o operador:

   ```
   --set webhook.enable=true
   ```

1. Verifique se você instalou o chart do Helm com o comando `helm list`:

   ```
   helm list --namespace spark-operator -o yaml
   ```

   O comando `helm list` deve retornar as informações da versão do chart do Helm recém-implantado:

   ```
   app_version: v1beta2-1.3.8-3.1.1
   chart: spark-operator-{{7.13.0}}
   name: spark-operator-demo
   namespace: spark-operator
   revision: "1"
   status: deployed
   updated: 2023-03-14 18:20:02.721638196 +0000 UTC
   ```

1. Conclua a instalação com quaisquer opções adicionais necessárias. Para obter mais informações, consulte a [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)documentação em. GitHub

## Execução de uma aplicação do Spark
<a name="spark-operator-run"></a>

O operador do Spark é compatível com o Amazon EMR 6.10.0 ou com versões superiores. Ao instalar o operador do Spark, ele cria a conta de serviço `emr-containers-sa-spark` para executar aplicações do Spark por padrão. Use as etapas apresentadas a seguir para executar uma aplicação do Spark com o operador do Spark no Amazon EMR no EKS 6.10.0 ou em versões superiores.

1. Antes de executar uma aplicação do Spark com o operador do Spark, conclua as etapas em [Configuração do operador do Spark para o Amazon EMR no EKS](spark-operator-setup.md) e [Instalação do operador do Spark](#spark-operator-install). 

1. Crie um arquivo de definição `SparkApplication` `spark-pi.yaml` com o seguinte conteúdo de exemplo: 

   ```
   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. Agora, envie a aplicação do Spark com o comando apresentado a seguir. Isso também criará um objeto `SparkApplication` chamado `spark-pi`:

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

1. Verifique os eventos do objeto `SparkApplication` com o seguinte comando: 

   ```
   kubectl describe sparkapplication spark-pi --namespace spark-operator
   ```

Para obter mais informações sobre como enviar inscrições para o Spark por meio do operador do Spark, consulte [Usando um `SparkApplication` na `spark-on-k8s-operator` documentação](https://www.kubeflow.org/docs/components/spark-operator/user-guide/using-sparkapplication/) sobre. GitHub

## Uso do Amazon S3 para armazenamento
<a name="spark-operator-s3-storage"></a>

Para usar o Amazon S3 como opção de armazenamento de arquivos, adicione as configurações a seguir ao arquivo 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 você usa o Amazon EMR nas versões 7.2.0 e superiores, as configurações são incluídas por padrão. Nesse caso, você pode definir o caminho do arquivo como `s3://{{<bucket_name>}}/{{<file_path>}}` em vez de `local://{{<file_path>}}` no arquivo YAML da aplicação do Spark. 

Em seguida, envie a aplicação do Spark normalmente.