EMR on ACK默認部署在X86架構的節點上,您也可以通過配置,將Spark作業運行在Arm類型的彈性容器實例(ECI)上。本文為您介紹如何使用Arm節點運行Spark作業。
前提條件
操作步驟
在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頁簽。
單擊目標集群操作列的配置。
在配置頁簽,單擊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
單擊確定。
在彈出的對話框中,輸入執行原因,單擊保存。
生效配置。
單擊部署客戶端配置。
在彈出的對話框中,輸入執行原因,單擊確定。
在確認對話框中,單擊確定。