기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon EMR on EKS에 대한 Spark 운영자 시작하기
이 주제는 Spark 애플리케이션과 Schedule Spark 애플리케이션을 배포하여 Amazon EKS에서 Spark 운영자를 사용하기 시작하는 데 도움이 됩니다.
Spark 운영자 설치
다음 단계를 사용하여 Apache Spark용 Kubernetes 운영자를 설치합니다.
-
아직 실행하지 않았다면, Amazon EMR on EKS에 대한 Spark 운영자 구성의 단계를 완료합니다.
-
Helm 클라이언트를 Amazon ECR 레지스트리에 인증합니다. 다음 명령에서
region-id
값을 원하는 AWS 리전및 리전별 Amazon ECR 레지스트리 계정 페이지에 있는 해당 리전에 대응하는ECR-registry-account
값으로 바꿉니다.aws ecr get-login-password \ --region
region-id
| helm registry login \ --username AWS \ --password-stdinECR-registry-account
.dkr.ecr.region-id
.amazonaws.com -
다음 명령을 사용하여 Spark 운영자를 설치합니다.
차트 Helm
--version
파라미터의 경우emr-
접두사 및 날짜 접미사가 제거된 Amazon EMR 릴리스 레이블을 사용합니다. 예를 들어,emr-6.12.0-java17-latest
릴리스에서6.12.0-java17
을 지정합니다. 다음 명령의 예제에서는emr-7.6.0-latest
릴리스를 사용하므로 차트 Helm--version
에 대해7.6.0
을 지정합니다.helm install spark-operator-demo \ oci://895885662937.dkr.ecr.
region-id
.amazonaws.com/spark-operator \ --set emrContainers.awsRegion=region-id
\ --version7.6.0
\ --namespace spark-operator \ --create-namespace기본적으로 이 명령은 Spark 운영자에 대한 서비스 계정
emr-containers-sa-spark-operator
를 생성합니다. 다른 서비스 계정을 사용하려면serviceAccounts.sparkoperator.name
인수를 제공합니다. 예시:--set serviceAccounts.sparkoperator.name
my-service-account-for-spark-operator
Spark 운영자에서 수직 자동 조정을 사용하려면 운영자에게 웹후크를 허용하도록 설치 명령에 다음 줄을 추가합니다.
--set webhook.enable=true
-
helm list
명령을 사용하여 차트 Helm을 설치했는지 확인합니다.helm list --namespace spark-operator -o yaml
helm list
명령은 새로 배포된 차트 Helm 릴리스 정보를 반환해야 합니다.app_version: v1beta2-1.3.8-3.1.1 chart: spark-operator-
7.6.0
name: spark-operator-demo namespace: spark-operator revision: "1" status: deployed updated: 2023-03-14 18:20:02.721638196 +0000 UTC -
필요한 추가 옵션을 사용하여 설치를 완료합니다. 자세한 내용은 GitHub의
spark-on-k8s-operator
설명서를 참조하세요.
Spark 애플리케이션 실행
Spark 운영자는 Amazon EMR 6.10.0 이상에서 지원됩니다. Spark 운영자를 설치하면 기본적으로 Spark 애플리케이션을 실행하기 위한 서비스 계정 emr-containers-sa-spark
가 생성됩니다. 다음 단계를 사용하여 Amazon EMR on EKS 6.10.0 이상에서 Spark 운영자를 사용하여 Spark 애플리케이션을 실행합니다.
-
Spark 운영자와 함께 Spark 애플리케이션을 실행하려면 먼저 Amazon EMR on EKS에 대한 Spark 운영자 구성 및 Spark 운영자 설치의 단계를 완료합니다.
-
다음 콘텐츠 예제가 포함된
SparkApplication
정의 파일spark-pi.yaml
을 생성합니다.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"
-
이제, 다음 명령을 사용하여 Spark 애플리케이션을 제출합니다. 이렇게 하면 이름이
spark-pi
인SparkApplication
객체도 생성됩니다.kubectl apply -f spark-pi.yaml
-
다음 명령을 사용하여
SparkApplication
객체에 대한 이벤트를 확인합니다.kubectl describe sparkapplication spark-pi --namespace spark-operator
Spark 운영자를 통해 Spark에 애플리케이션을 제출하는 방법에 대한 자세한 내용은 GitHub의 spark-on-k8s-operator
설명서에서 Using a SparkApplication
스토리지로 Amazon S3 사용
Amazon S3를 파일 스토리지 옵션으로 사용하려면 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
Amazon EMR 릴리스 7.2.0 이상을 사용하는 경우 구성이 기본적으로 포함됩니다. 이 경우 Spark 애플리케이션 YAML 파일 local://
대신 <file_path>
s3://
로 파일 경로를 설정할 수 있습니다.<bucket_name>
/<file_path>
그런 다음, Spark 애플리케이션을 정상적으로 제출합니다.