全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:使用Arm虚拟节点运行Spark作业

更新时间:Jun 02, 2023

EMR on ACK默认部署在x86架构的节点上,您也可以通过配置将Spark作业运行在Arm虚拟节点(弹性容器实例ECI)上。本文为您介绍如何使用Arm虚拟节点运行Spark作业。

索引

前提条件

  • 已在EMR on ACK控制台创建Spark集群。详细信息,请参见快速入门

  • 已开通弹性容器实例服务。详细信息,请参见容器服务使用ECI

EMR和EMR on ACK介绍

  • EMR:阿里云开源大数据开发平台E-MapReduce(简称EMR),是运行在阿里云平台上的一种大数据处理的系统解决方案。详细信息,请参见什么是E-MapReduce

  • EMR on ACK:阿里云EMR on ACK提供了全新构建大数据平台的方式。您可以将开源大数据服务部署在阿里云容器服务ACK上。利用ACK在服务部署和容器应用管理的优势,减少对底层集群资源的运维投入,让您可以更聚焦于大数据任务本身。详细信息,请参见EMR on ACK概述

操作步骤

  1. 在ACK集群中安装虚拟节点。详细信息,请参见方式二:添加Arm架构的虚拟节点

  2. 在EMR on ACK上提交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. 配置页签,单击spark-defaults.conf

    2. 配置Spark集群以启用ECI。

      1. 单击上方的新增配置项

      2. 新增配置项对话框中,添加以下配置。

        Key

        说明

        示例值

        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. 确认对话框中,单击确定