通过ACK One Fleet实例,您可以使用和单集群相同的方式创建Spark任务。由Fleet实例根据Spark任务需要的资源和关联集群的剩余资源,执行动态调度策略,选择适合的关联集群下发Spark任务。本文介绍如何创建Spark任务并查看任务状态。
前提条件
Spark Operator支持的API版本为
sparkoperator.k8s.io/v1beta2
,用于管理Spark应用的CRD。默认情况下,Fleet实例已支持Spark应用的CRD,Fleet实例管理员可以通过以下命令查看CRD。kubectl get crd sparkapplications.sparkoperator.k8s.io
已从ACK One控制台获取Fleet实例的KubeConfig,并通过kubectl连接至Fleet实例。
已安装AMC命令行工具。具体操作,请参见AMC命令行帮助。
步骤一:安装Spark Operator
Fleet实例管理员登录容器服务管理控制台。
在控制台左侧导航栏中,选择 。
在应用市场页面单击应用目录页签,然后搜索并选中ack-spark-operator3.0。
在ack-spark-operator3.0页面,单击一键部署。
在弹出面板中,选择集群和命名空间,然后单击下一步。
在参数配置页面,将
sparkJobNamespace
设置为有效的命名空间名称,例如default
或您使用的其他命名空间。然后单击确定。
步骤二:创建Spark任务并查看状态
开发者用户使用以下YAML文件,在Fleet实例上创建任务。
示例的命名空间
default
,示例的任务名称为pi
。apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: pi namespace: default spec: type: Scala mode: cluster image: "acr-multiple-clusters-registry.cn-hangzhou.cr.aliyuncs.com/ack-multiple-clusters/spark:v3.1.1" imagePullPolicy: Always mainClass: org.apache.spark.examples.SparkPi mainApplicationFile: "local:///opt/spark/examples/jars/spark-examples_2.12-3.1.1.jar" sparkVersion: "3.1.1" restartPolicy: type: Never volumes: - name: "test-volume" hostPath: path: "/tmp" type: Directory driver: cores: 1 coreLimit: "1200m" memory: "512m" labels: version: 3.1.1 serviceAccount: ack-spark-operator3.0-spark volumeMounts: - name: "test-volume" mountPath: "/tmp" executor: cores: 1 instances: 3 memory: "512m" labels: version: 3.1.1 volumeMounts: - name: "test-volume" mountPath: "/tmp"
执行以下命令,在Fleet实例上获取任务的调度结果。
如果调度失败,则显示为空。请检查是否正确配置命名空间与配额。如果命名空间配置配额或者配额用完,任务将暂停调度。
kubectl get sparkapplication pi -o jsonpath='{.metadata.annotations.scheduling\.x-k8s\.io/placement}'
查看Spark任务的状态。
执行以下命令,在Fleet实例上获取任务的运行状态。
kubectl get sparkapplication pi
预期输出:
NAME STATUS ATTEMPTS START FINISH AGE pi COMPLETED 1 *** *** ***
执行以下命令获取任务相关Pod的运行状态。安装
amc
命令请参见AMC命令行帮助。kubectl amc get pod -j sparkapplication/pi
预期输出:
Run on ManagedCluster managedcluster-c1***e5 NAME READY STATUS RESTARTS AGE pi-driver 0/1 Completed 0 ***
执行以下命令获取Pod的运行日志。
kubectl amc logs pi-driver -j sparkapplication/pi
预期输出:
Run on ManagedCluster managedcluster-c1***e5 ... Pi is roughly 3.144875724378622 ...