EMR on ACK預設部署在X86架構的節點上,您也可以通過配置,將Spark作業運行在Arm類型的Elastic Container Instance上。本文為您介紹如何使用Arm節點運行Spark作業。
前提條件
- 已在E-MapReduce on ACK控制台建立Spark叢集,詳情請參見快速使用EMR on ACK。
已開通Elastic Container Instance服務,詳情請參見使用流程。
操作步驟
在ACK叢集中安裝ECI所需的虛擬節點,詳情請參見方式二:添加Arm架構的虛擬節點。
在EMR on ACK上提交Spark作業。提交Spark作業詳情,請參見提交Spark作業。
方式一:使用CRD方式提交作業
提交作業時,需要添加以下內容:
指定image鏡像:本文樣本為registry-vpc.cn-hangzhou.aliyuncs.com/emr/spark-py:emr-3.3.1-1.1.7-arm,其中cn-hangzhou需替換為您實際Region的名稱。
添加annotations:內容為
alibabacloud.com/burst-resource: "eci_only"。添加nodeSelector:內容為
kubernetes.io/arch: arm64。
新增內容樣本如下。
apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: spark-pi-eci spec: type: Scala sparkVersion: 3.3.1 mainClass: org.apache.spark.examples.SparkPi # Arm節點需使用特定鏡像。 image: registry-vpc.cn-hangzhou.aliyuncs.com/emr/spark-py:emr-3.3.1-1.1.7-arm mainApplicationFile: "local:///opt/spark/examples/spark-examples.jar" arguments: - "100000" driver: cores: 2 coreLimit: 2000m memory: 4g # 通過配置Annotation,所有Executor使用ECI彈性資源。 annotations: alibabacloud.com/burst-resource: "eci_only" # 通過配置nodeSelector,指定Arm類型節點。 nodeSelector: kubernetes.io/arch: arm64 executor: cores: 4 coreLimit: 4000m memory: 8g instances: 10 # 通過配置Annotation,所有Executor使用ECI彈性資源。 annotations: alibabacloud.com/burst-resource: "eci_only" # 通過配置nodeSelector,指定Arm類型節點。 nodeSelector: kubernetes.io/arch: arm64方式二:配置Spark Conf
您也可以通過增加Spark Conf來配置image、Annotation和NodeSelector,從而實現Arm節點調度。取值與方式一相同。
進入spark-defaults.conf頁簽。
登入EMR on ACK。
單擊目的地組群操作列的配置。
在配置頁簽,單擊spark-defaults.conf。
配置Spark叢集以啟用ECI。
單擊上方的新增配置項。
在新增配置項對話方塊中,添加以下配置。
參數
說明
參數值
spark.kubernetes.container.image
Spark鏡像。
registry-vpc.cn-hangzhou.aliyuncs.com/emr/spark-py:emr-3.3.1-1.1.7-arm
說明其中cn-hangzhou需要替換為您實際Region的名稱。
spark.kubernetes.driver.annotation.alibabacloud.com/burst-resource
Spark Driver是否使用ECI。
eci_only
spark.kubernetes.driver.node.selector.kubernetes.io/arch
Spark Driver的nodeSelector。
arm64
spark.kubernetes.executor.annotation.alibabacloud.com/burst-resource
Spark Executor是否使用ECI。
eci_only
spark.kubernetes.executor.node.selector.kubernetes.io/arch
Spark Executor的nodeSelector。
arm64
單擊確定。
在彈出的對話方塊中,輸入執行原因,單擊儲存。
生效配置。
單擊部署用戶端配置。
在彈出的對話方塊中,輸入執行原因,單擊確定。
在確認對話方塊中,單擊確定。