Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cómo empezar con el operador Spark para Amazon EMR en EKS
Este tema te ayuda a empezar a utilizar el operador Spark en Amazon EKS mediante la implementación de una aplicación Spark y una aplicación Schedule Spark.
Instalar el operador de Spark
Siga estos pasos para instalar el operador de Kubernetes para Apache Spark.
-
Si aún no lo ha hecho, complete los pasos de Configuración del operador Spark para Amazon EMR en EKS.
-
Autentica tu cliente Helm en el ECR registro de Amazon. En el siguiente comando, sustituye los
region-id
valores de la Cuentas de ECR registro de Amazon por región página por los que prefieras Región de AWS y por elECR-registry-account
valor correspondiente a la región.aws ecr get-login-password \ --region
region-id
| helm registry login \ --username AWS \ --password-stdinECR-registry-account
.dkr.ecr.region-id
.amazonaws.com -
Instale el operador de Spark con el siguiente comando.
Para el
--version
parámetro del gráfico Helm, usa tu etiqueta de EMR lanzamiento de Amazon sin elemr-
prefijo y el sufijo de fecha. Por ejemplo, con la versiónemr-6.12.0-java17-latest
, especifique6.12.0-java17
. El ejemplo del siguiente comando usa la versiónemr-7.3.0-latest
, por lo que especifica7.3.0
para el gráfico de Helm--version
.helm install spark-operator-demo \ oci://895885662937.dkr.ecr.
region-id
.amazonaws.com/spark-operator \ --set emrContainers.awsRegion=region-id
\ --version7.3.0
\ --namespace spark-operator \ --create-namespaceDe forma predeterminada, el comando crea una cuenta de servicio
emr-containers-sa-spark-operator
para el operador de Spark. Para usar una cuenta de servicio diferente, proporcione el argumentoserviceAccounts.sparkoperator.name
. Por ejemplo:--set serviceAccounts.sparkoperator.name
my-service-account-for-spark-operator
Si quiere usar el escalado automático vertical con el operador de Spark, agregue la siguiente línea al comando de instalación para admitir webhooks para el operador:
--set webhook.enable=true
-
Compruebe que haya instalado el gráfico de Helm con el comando
helm list
:helm list --namespace spark-operator -o yaml
El comando
helm list
debería devolver la información de lanzamiento del gráfico de Helm recién implementado:app_version: v1beta2-1.3.8-3.1.1 chart: spark-operator-
7.3.0
name: spark-operator-demo namespace: spark-operator revision: "1" status: deployed updated: 2023-03-14 18:20:02.721638196 +0000 UTC -
Complete la instalación con todas las opciones adicionales que necesite. Para obtener más información, consulta la
spark-on-k8s-operator
documentación sobre. GitHub
Ejecutar una aplicación de Spark
El operador Spark es compatible con Amazon EMR 6.10.0 o superior. Cuando instala el operador de Spark, este crea la cuenta de servicio emr-containers-sa-spark
para ejecutar las aplicaciones de Spark de forma predeterminada. Sigue los siguientes pasos para ejecutar una aplicación de Spark con el operador de Spark en Amazon EMR en la versión EKS 6.10.0 o superior.
-
Antes de poder ejecutar una aplicación de Spark con el operador de Spark, complete los pasos indicados en Configuración del operador Spark para Amazon EMR en EKS y Instalar el operador de Spark.
-
Cree un archivo de definición de
SparkApplication
spark-pi.yaml
con el siguiente contenido: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"
-
Luego, implemente la aplicación de Spark con el siguiente comando. Esto también creará un objeto
SparkApplication
denominadospark-pi
:kubectl apply -f spark-pi.yaml
-
Compruebe los eventos del objeto
SparkApplication
con el siguiente comando:kubectl describe sparkapplication spark-pi --namespace spark-operator
Para obtener más información sobre cómo enviar solicitudes a Spark a través del operador de Spark, consulta Cómo usar un SparkApplication
spark-on-k8s-operator
documentación de. GitHub
Uso de Amazon S3 para almacenamiento
Para usar Amazon S3 como opción de almacenamiento de archivos, añada las siguientes configuraciones al YAML archivo.
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
Si utilizas las EMR versiones 7.2.0 y superiores de Amazon, las configuraciones se incluyen de forma predeterminada. En ese caso, puedes establecer la ruta del archivo en el archivo de la aplicación YAML Spark, local://
en <file_path>
s3://
lugar de hacerlo en ella. <bucket_name>
/<file_path>
A continuación, envíe la aplicación de Spark como de costumbre.