通過ACK One Fleet實例,您可以使用和單集群相同的方式創建Spark任務。由Fleet實例根據Spark任務需要的資源和關聯集群的剩余資源,執行動態調度策略,選擇適合的關聯集群下發Spark任務。本文介紹如何創建Spark任務并查看任務狀態。
前提條件
Fleet實例默認已安裝Spark Operator的Spark Application CRD,支持的Spark Application CRD的APIVersion為sparkoperator.k8s.io/v1beta2。
Fleet實例管理員可以通過以下命令查看CRD。
kubectl get crd sparkapplications.sparkoperator.k8s.io
如有定制需求,Fleet實例管理員可以修改sparkoperator.k8s.io_sparkapplications.yaml,通過以下命令修改CRD。
kubectl apply -f manifest/crds/sparkoperator.k8s.io_sparkapplications.yaml
Fleet實例管理員已在所有關聯集群上安裝Spark Operator。具體操作,請參見步驟一:安裝Spark Operator。
已從ACK One控制臺獲取Fleet實例的KubeConfig,并通過kubectl連接至Fleet實例。
已安裝AMC命令行工具。具體操作,請參見AMC命令行幫助。
步驟一:安裝Spark Operator
Fleet實例管理員登錄容器服務管理控制臺。
在控制臺左側導航欄中,選擇 。
在應用市場頁面單擊應用目錄頁簽,然后搜索并選中ack-spark-operator3.0。
在ack-spark-operator3.0頁面,單擊一鍵部署。
在彈出面板中,選擇集群和命名空間,然后單擊下一步。
在參數部分設置sparkJobNamespace為“”,然后單擊確定。
步驟二:創建Spark任務并查看狀態
開發者用戶使用以下YAML文件,在Fleet實例上創建任務。
示例的命名空間為
demo
,示例的任務名稱為pi
。apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: pi namespace: demo 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: 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 -n demo -o jsonpath='{.metadata.annotations.scheduling\.x-k8s\.io/placement}'
查看Spark任務的狀態。
執行以下命令,在Fleet實例上獲取任務的運行狀態。
kubectl get sparkapplication pi -n demo
預期輸出:
NAME STATUS ATTEMPTS START FINISH AGE pi COMPLETED 1 *** *** ***
執行以下命令獲取任務相關Pod的運行狀態。
kubectl amc get pod -j sparkapplication/pi -n demo
預期輸出:
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 -n demo
預期輸出:
Run on ManagedCluster managedcluster-c1***e5 ... Pi is roughly 3.144875724378622 ...