Amazon EMR on EKS 的 Spark Operator 入门 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon EMR on EKS 的 Spark Operator 入门

本主题旨在通过部署 Spark 应用程序和 Schedule Spark 应用程序,帮助您开始在 Amazon EKS 上使用 Spark Operator。

安装 Spark Operator

按照以下步骤安装 Apache Spark 版 Kubernetes Operator。

  1. 如果尚未执行此操作,请完成 设置 Amazon EMR on EKS 的 Spark Operator 中的步骤。

  2. 向 Amazon ECR 注册表验证您的 Helm 客户端。在以下命令中,将 region-id 值替换为您首选的 Amazon Web Services 区域,并将 按区域划分的 Amazon ECR 注册账户 页面中相应的 ECR-registry-account 值替换为该地区的相应值。

    aws ecr get-login-password \ --region region-id | helm registry login \ --username AWS \ --password-stdin ECR-registry-account.dkr.ecr.region-id.amazonaws.com
  3. 使用以下命令安装 Spark Operator。

    对于 Helm 图表 --version 参数,请使用删除了 emr- 前缀和日期后缀的 Amazon EMR 发行版标签。例如,若为 emr-6.12.0-java17-latest 发行版,则指定 6.12.0-java17。以下命令中的示例使用 emr-6.14.0-latest 发行版,因此为 Helm 图表 --version 指定了 6.14.0

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

    默认情况下,该命令会为 Spark Operator 创建服务账户 emr-containers-sa-spark-operator。若要使用其他服务账户,请提供参数 serviceAccounts.sparkoperator.name。例如:

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

    要在 Spark Operator 中使用垂直自动扩展功能,请在安装命令中添加以下行,从而允许 Operator 的 Webhook:

    --set webhook.enable=true
  4. 使用 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-6.14.0 name: spark-operator-demo namespace: spark-operator revision: "1" status: deployed updated: 2023-03-14 18:20:02.721638196 +0000 UTC
  5. 使用所需的任何其他选项完成安装。有关更多信息,请参阅 GitHub 上的 spark-on-k8s-operator 文档。

运行 Spark 应用程序

Amazon EMR 6.10.0 或更高版本都支持 Spark Operator。安装 Spark Operator 时,默认会创建服务账户 emr-containers-sa-spark 来运行 Spark 应用程序。按照下述步骤在 Amazon EMR on EKS 6.10.0 或更高版本上使用 Spark Operator 来运行 Spark 应用程序。

  1. 在使用 Spark Operator 运行 Spark 应用程序之前,请先完成 设置 Amazon EMR on EKS 的 Spark Operator安装 Spark Operator 中的步骤。

  2. 使用以下示例内容创建 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"
  3. 现在,使用以下命令提交 Spark 应用程序。此操作还会创建一个名为 spark-piSparkApplication 对象:

    kubectl apply -f spark-pi.yaml
  4. 使用以下命令检查 SparkApplication 对象的事件:

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

有关通过 Spark Operator 向 Spark 提交应用程序的更多信息,请在 GitHub 上参阅 spark-on-k8s-operator 文档中的 Using a SparkApplication