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
单击确定。
在弹出的对话框中,输入执行原因,单击保存。
生效配置。
单击部署客户端配置。
在弹出的对话框中,输入执行原因,单击确定。
在确认对话框中,单击确定。