赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. ACK Serverless集群
  4. 实践教程
  5. 通过ACK Serverless创建Spark计算任务

通过ACK Serverless创建Spark计算任务

  • 实践教程
  • 发布于 2025-04-18
  • 0 次阅读
文档编辑
文档编辑

在ACK Serverless集群中,您可以按需按量创建Pod。当Pod结束后停止收费,无需为Spark计算任务预留计算资源,从而摆脱集群计算力不足和扩容的烦扰,同时结合抢占式实例可以降低任务的计算成本。本文主要为您介绍如何通过ACK Serverless按需创建Spark计算任务。

前提条件

  • 已创建ACK Serverless集群。具体操作,请参见创建ACK Serverless集群。

  • 已通过Kubectl工具连接ACK Serverless集群。具体操作,请参见通过kubectl连接Kubernetes集群。

操作步骤

  1. 部署ack-spark-operator Chart,可以通过以下两种方式:

    • 在容器服务管理控制台的导航栏中选择市场 > 应用市场,通过选择ack-spark-operator来进行部署。

    • 通过helm命令行手动安装。

      说明

      要求Helm的版本不低于V3。

      #创建Service account。
      kubectl create serviceaccount spark
      #绑定权限。
      kubectl create clusterrolebinding spark-role --clusterrole=edit --serviceaccount=default:spark --namespace=default
      #安装Operator。
      helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
      helm install incubator/sparkoperator --namespace default  --set operatorImageName=registry.cn-hangzhou.aliyuncs.com/acs/spark-operator  --set operatorVersion=ack-2.4.5-latest  --generate-name

    部署后可以执行以下命令确认spark-operator已经启动成功。

    kubectl -n spark-operator get pod

    预期输出:

    NAME                                  READY   STATUS      RESTARTS   AGE
    ack-spark-operator-7698586d7b-pvwln   1/1     Running     0          5m9s
    ack-spark-operator-init-26tvh         0/1     Completed   0          5m9s
  2. 创建spark-pi.yaml文件并拷贝以下内容到该文件。

    apiVersion: "sparkoperator.k8s.io/v1beta2"
    kind: SparkApplication
    metadata:
      name: spark-pi
      namespace: default
    spec:
      arguments:
      - "1000"
      sparkConf:
        "spark.scheduler.maxRegisteredResourcesWaitingTime": "3000s"
        "spark.kubernetes.allocation.batch.size": "1"
        "spark.rpc.askTimeout": "36000s"
        "spark.network.timeout": "36000s"
        "spark.rpc.lookupTimeout": "36000s"
        "spark.core.connection.ack.wait.timeout": "36000s"
        "spark.executor.heartbeatInterval": "10000s"
      type: Scala
      mode: cluster
      image: "registry.aliyuncs.com/acs/spark:ack-2.4.5-latest"
      imagePullPolicy: Always
      mainClass: org.apache.spark.examples.SparkPi
      mainApplicationFile: "local:///opt/spark/examples/jars/spark-examples_2.11-2.4.5.jar"
      sparkVersion: "2.4.5"
      restartPolicy:
        type: Never
      args:
      driver:
        cores: 4
        coreLimit: "4"
        annotations:
          k8s.aliyun.com/eci-image-cache: "true"
        memory: "6g"
        memoryOverhead: "2g"
        labels:
          version: 2.4.5
        serviceAccount: spark
      executor:
        annotations:
          k8s.aliyun.com/eci-image-cache: "true"
        cores: 2
        instances: 1
        memory: "3g"
        memoryOverhead: "1g"
        labels:
          version: 2.4.5
  3. 部署Spark计算任务。

    1. 执行以下命令,部署Spark计算任务。

      kubectl apply -f spark-pi.yaml

      预期输出:

      sparkapplication.sparkoperator.k8s.io/spark-pi created
    2. 执行以下命令,查看Spark计算任务的部署状态。

      kubectl get pod

      预期输出:

      NAME              READY   STATUS    RESTARTS   AGE
      spark-pi-driver   1/1     Running   0          2m12s

      从预期输出可得,Pod的运行状态为Running,表示正在部署Spark计算任务。

    3. 执行以下命令,再次查看Spark计算任务的部署状态。

      kubectl get pod

      预期输出:

      NAME              READY   STATUS      RESTARTS   AGE
      spark-pi-driver   0/1     Completed   0          2m54s

      从预期输出可得,Pod的运行状态为Completed,表示Spark计算任务已部署完成。

  4. 执行以下命令,查看Spark任务的计算结果。

    kubectl logs spark-pi-driver|grep Pi

    预期输出:

    20/04/30 07:27:51 INFO DAGScheduler: ResultStage 0 (reduce at SparkPi.scala:38) finished in 11.031 s
    20/04/30 07:27:51 INFO DAGScheduler: Job 0 finished: reduce at SparkPi.scala:38, took 11.137920 s
    Pi is roughly 3.1414371514143715
  5. 可选:通过给Pod加上抢占式实例的Annotation,使用抢占式实例。

    关于抢占式实例Annotation的用法,请参见使用抢占式实例。

相关文章

ACK Serverless弹性低成本CICD 2025-04-18 14:52

本文介绍阿里云容器服务Serverless版弹性低成本的CI/CD(持续集成和持续交付)的场景描述、方案优势、解决问题、架构图及操作参考链接。 场景描述

使用ECI搭建WordPress应用 2025-04-18 14:52

ECI支持使用Cloud Shell来管理。本文以搭建WordPress应用为例,介绍如何使用Cloud Shell来创建ACK Serverless集群,并快速创建ECI实例来部署容器应用。

使用ECI运行Spark作业 2025-04-18 14:52

在Kubernetes集群中使用ECI来运行Spark作业具有弹性伸缩、自动化部署、高可用性等优势,可以提高Spark作业的运行效率和稳定性。本文介绍如何在ACK Serverless集群中安装Spark Operator,使用ECI来运行Spark作业。

使用ECI运行TensorFlow任务 2025-04-18 14:52

您可以将AI训练任务所需的软件环境容器化,然后在ECI上执行训练任务,在解决环境搭建复杂问题的同时,可以只为运行时间付费,从而降低成本,提升效率。本文以一个Github上基于GPU的TensorFlow训练任务为例,介绍如何基于ACK Serverless集群,使用ECI来运行训练任务。

使用抢占式ECI实例运行Job任务 2025-04-18 14:52

ECI支持抢占式实例,对于短时间运行的Job任务,以及部分扩展性和容错率高的无状态应用(例如可弹性伸缩的Web站点服务),使用抢占式实例可以有效地节约实例使用成本。本文以Job任务为例,演示如何创建抢占式实例类型的ECI Pod来运行Job任务。 背景信息

在ACK Serverless集群中部署Jenkins并完成应用构建和部署 2025-04-18 14:52

本文介绍如何在阿里云ACK Serverless集群中部署Jenkins并通过简单的应用示例演示其构建和部署的过程。 前提条件

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号