全部產品
Search
文件中心

E-MapReduce:快速使用EMR on ACK

更新時間:Aug 16, 2024

本文為您介紹如何通過阿里雲帳號登入E-MapReduce控制台,基於Kubernetes建立E-MapReduce(簡稱EMR)叢集並執行作業。

注意事項

  • 代碼的運行環境由所屬使用者負責管理和配置。

  • 在本文的樣本中,JAR包已經直接打包在了鏡像中。如果您使用的是自己的JAR包,您可以將其上傳到阿里雲OSS。上傳操作請參見簡單上傳

    此時,需要您修改命令中的local:///opt/spark/examples/spark-examples.jar為您OSS上存放JAR包的真實路徑,路徑格式為oss://<yourBucketName>/<path>.jar

準備工作

建立EMR on ACK叢集前,需要在Container Service管理主控台,進行以下操作:

  1. 建立Kubernetes叢集,詳情請參見建立ACK專有叢集建立ACK託管叢集

  2. 添加AliyunOSSFullAccess和AliyunDLFFullAccess許可權,詳情請參見授予OSS和DLF許可權

說明

如果您想要將JAR包儲存在阿里雲OSS上,需要先開通Object Storage Service服務,詳情請參見開通OSS服務

步驟一:角色授權

使用EMR on ACK前,需要在EMR on ACK控制台授予您的阿里雲帳號AliyunEMROnACKDefaultRole系統預設角色,詳情請參見阿里雲帳號角色授權

步驟二:建立叢集

基於Kubernetes建立一個Spark叢集。更多叢集建立的資訊,請參見建立叢集

  1. 登入EMR on ACK控制台

  2. 在EMR on ACK頁面,單擊建立叢集

  3. EMR on ACK頁面,完成叢集相關配置。

    參數

    樣本

    描述

    地區

    華東1(杭州)

    建立的叢集會在對應的地區內,一旦建立不能修改。

    叢集類型

    Spark

    通用的分布式巨量資料處理引擎,提供了ETL、離線批處理和資料建模等能力。

    重要

    建立Spark叢集後,如果您需要關聯集群,則所選產品版本的大版本號碼需要和關聯的Shuffle Service叢集大版本號碼一致。例如,EMR-5.x-ack版本的Spark叢集只能關聯EMR-5.x-ack版本的Shuffle Service叢集。

    產品版本

    EMR-5.6.0-ack

    預設最新的軟體版本。

    組件版本

    SPARK (3.2.1)

    所選叢集類型下的組件及組件版本資訊。

    ACK叢集

    Emr-ack

    選擇已有的ACK叢集,或者在Container ServiceACK控制台建立ACK叢集。

    重要

    同一個ACK叢集,不可關聯同類型的多個EMR on ACK叢集。

    單擊配置專屬節點,可以配置EMR專屬節點。配置專屬節點可以對節點池或節點打上EMR專屬的汙點和標籤。

    說明

    推薦您使用節點池的方式來配置專屬節點,如果沒有節點池,請建立節點池,詳情請參見建立節點池。節點池相關的資訊,請參見節點池概述

    OSS Bucket

    oss-spark-test

    選擇已有的Bucket,或者在Object Storage Service控制台建立Bucket。

    叢集名稱

    Emr-Spark

    叢集的名字,長度限制為1~64個字元,僅可使用中文、字母、數字、中劃線(-)和底線(_)。

  4. 單擊建立

    當叢集狀態顯示為運行中時,表示叢集建立成功。

步驟三:提交作業

叢集建立成功後,您可以提交作業。本文以通過CRD方式提交Spark作業為例介紹。關於Spark的更多介紹,可以參見開來源文件Quick Start,選擇適合您的語言和版本。

提交作業的詳細資料請參見:

  1. 通過kubectl串連Kubernetes叢集,詳情請參見擷取叢集KubeConfig並通過kubectl工具串連叢集

  2. 建立spark-pi.yaml檔案,檔案內容如下。

    apiVersion: "sparkoperator.k8s.io/v1beta2"
    kind: SparkApplication
    metadata:
      name: spark-pi-simple
    spec:
      type: Scala
      sparkVersion: 3.2.1
      mainClass: org.apache.spark.examples.SparkPi
      mainApplicationFile: "local:///opt/spark/examples/spark-examples.jar"
      arguments:
        - "1000"
      driver:
        cores: 1
        coreLimit: 1000m
        memory: 4g
      executor:
        cores: 1
        coreLimit: 1000m
        memory: 8g
        memoryOverhead: 1g
        instances: 1

    本文樣本中的參數描述,請參見spark-on-k8s-operator

    說明
    • 檔案名稱您可以自訂,本文以spark-pi.yaml為例介紹。

    • 本文以Spark 3.2.1(EMR-5.6.0)版本為例,其他版本時請修改sparkVersion的配置。

  3. 執行如下命令,提交作業。

    kubectl apply -f spark-pi.yaml --namespace <叢集對應的namespace>

    本文範例程式碼中的<叢集對應的namespace>,需要替換為叢集的命名空間,您可以登入E-MapReduce on ACK控制台,在叢集詳情頁面查看。

    返回如下資訊。

    sparkapplication.sparkoperator.k8s.io/spark-pi-simple created
    說明

    spark-pi-simple為本樣本提交任務後的作業名。

  4. 可選:您可以在作業詳情頁面查看已建立的作業資訊。

(可選)步驟四:釋放叢集

如果您建立的叢集不再使用時,可以釋放叢集節約成本。

  1. 在EMR on ACK頁面,單擊目的地組群操作列的釋放

  2. 釋放叢集對話方塊中,單擊確定

相關文檔