全部產品
Search
文件中心

E-MapReduce:使用Arm節點運行Spark作業

更新時間:Jul 07, 2024

EMR on ACK預設部署在X86架構的節點上,您也可以通過配置,將Spark作業運行在Arm類型的Elastic Container Instance上。本文為您介紹如何使用Arm節點運行Spark作業。

前提條件

操作步驟

  1. 在ACK叢集中安裝ECI所需的虛擬節點,詳情請參見方式二:添加Arm架構的虛擬節點

  2. 在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節點調度。取值與方式一相同。

    1. 進入spark-defaults.conf頁簽。

      1. 登入EMR on ACK

      2. 單擊目的地組群操作列的配置

      3. 配置頁簽,單擊spark-defaults.conf

    2. 配置Spark叢集以啟用ECI。

      1. 單擊上方的新增配置項

      2. 新增配置項對話方塊中,添加以下配置。

        參數

        說明

        參數值

        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

      3. 單擊確定

      4. 在彈出的對話方塊中,輸入執行原因,單擊儲存

    3. 生效配置。

      1. 單擊部署用戶端配置

      2. 在彈出的對話方塊中,輸入執行原因,單擊確定

      3. 確認對話方塊中,單擊確定