本文为您介绍如何通过阿里云账号登录E-MapReduce控制台,基于Kubernetes创建E-MapReduce(简称EMR)集群并执行作业。

背景信息

节点池相关的信息,请参见节点池概述

前提条件

操作流程

  1. 步骤一:创建集群
    基于Kubernetes创建一个EMR集群。
  2. 步骤二:提交作业
    集群创建成功后,您可以提交作业,本文以通过CRD方式提交Spark作业为例介绍。
  3. (可选)步骤三:释放集群
    如果不再使用该集群,可以释放集群以节约成本。

步骤一:创建集群

  1. 登录阿里云E-MapReduce on ACK控制台
  2. 集群管理页面,单击创建集群
  3. E-MapReduce on ACK页面,完成集群相关配置。
    参数 示例 描述
    地域 华东1(杭州) 创建的集群将会在对应的地域内,一旦创建不能修改。
    集群类型 Spark 支持以下三种集群类型:
    • Spark:是通用的分布式大数据处理引擎,提供了ETL、离线批处理和数据建模等能力。
      注意 创建Spark集群后,如果您需要关联集群,则所选产品版本的大版本号需要和关联的Shuffle Service集群大版本号一致。例如,EMR-5.x-ack版本的Spark集群只能关联EMR-5.x-ack版本的Shuffle Service集群。
    • Shuffle Service:是阿里云EMR在优化计算引擎的Shuffle操作上,推出的扩展组件。Shuffle Service通过提供远端Shuffle服务,使得Spark作业可以运行在无本地盘的节点上,并完美支持了动态资源,非常适合ACK环境下的Spark集群,详情请参见ESS概述
      注意 当创建Shuffle Service集群类型时,新建的Kubernetes集群或者选择的已有的Kubernetes集群的实例规格必须是大数据型或者本地SSD,否则部署RSS失败。
      Shuffle
    • Presto:是基于内存的分布式SQL交互式查询引擎。

      支持多种数据源,适合PB级海量数据的复杂分析,以及跨数据源的查询。

    产品版本 EMR-4.6.0-ack 默认最新的软件版本。
    组件版本 SPARK (2.4.7-schemav2-ack-1.1) 所选集群类型下的组件及组件版本信息。
    ACK集群 Emr-ack 选择已有的ACK集群,或者在容器服务ACK控制台新建ACK集群。
    单击配置专属节点,可以配置EMR专属节点。配置专属节点可以对节点池或节点打上EMR专属的污点和标签,被配置的节点池或节点只能用于EMR。
    说明 推荐您使用节点池的方式来配置专属节点,如果没有节点池,请创建节点池,详情请参见创建节点池
    OSS Bucket oss-spark-test 选择已有的Bucket,或者在对象存储OSS控制台新建Bucket。
    集群名称 Emr-Spark 集群的名字,长度限制为1~64个字符,仅可使用中文、字母、数字、中划线(-)和下划线(_)。
  4. 单击创建
    当集群状态显示为运行中时,表示集群创建成功。

步骤二:提交作业

本文以通过CRD方式提交Spark作业为例介绍。提交作业的详细信息请参见:
  1. 通过kubectl连接Kubernetes集群,详情请参见通过kubectl工具连接集群
  2. 新建spark-pi.yaml文件,文件内容如下。
    apiVersion: "sparkoperator.k8s.io/v1beta2"
    kind: SparkApplication
    metadata:
      name: spark-pi-simple
    spec:
      type: Scala
      sparkVersion: 2.4.5
      mainClass: org.apache.spark.examples.SparkPi
      mainApplicationFile: "local:///opt/spark/examples/target/scala-2.11/jars/spark-examples_2.11-2.4.5.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 2.4.5(EMR-3.33.0-ack)为例,其它版本时请修改sparkVersionmainApplicationFile的配置。
  3. 执行如下命令,提交作业。
    kubectl apply -f spark-pi.yaml --namespace <集群对应的namespace>
    本文示例代码中的<集群对应的namespace>,需要替换为集群的命名空间,您可以登录E-MapReduce on ACK控制台,在集群详情页面查看。ack_namespace
    返回如下信息。
    sparkapplication.sparkoperator.k8s.io/spark-pi-simple created
    说明 spark-pi-simple为本示例提交任务后的作业名。
  4. 可选:您可以在集群详情页面的作业区域,查看已创建的作业信息。
    task

(可选)步骤三:释放集群

如果您创建的集群不再使用时,可以释放集群节约成本。

  1. 在集群管理页面,单击目标集群操作列的释放
  2. 释放集群对话框中,单击确定

相关文档