本文为您介绍如何通过阿里云账号登录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集群前,需要在容器服务管理控制台,进行以下操作:
添加AliyunOSSFullAccess和AliyunDLFFullAccess权限,详情请参见授予OSS和DLF权限。
如果您想要将JAR包存储在阿里云OSS上,需要先开通对象存储OSS服务,详情请参见开通OSS服务。
步骤一:角色授权
使用EMR on ACK前,需要在EMR on ACK控制台授予您的阿里云账号AliyunEMROnACKDefaultRole系统默认角色,详情请参见阿里云账号角色授权。
步骤二:创建集群
基于Kubernetes创建一个Spark集群。更多集群创建的信息,请参见创建集群。
在EMR on ACK页面,单击创建集群。
在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集群,或者在容器服务ACK控制台新建ACK集群。
重要同一个ACK集群,不可关联同类型的多个EMR on ACK集群。
OSS Bucket
oss-spark-test
选择已有的Bucket,或者在对象存储OSS控制台新建Bucket。
集群名称
Emr-Spark
集群的名字,长度限制为1~64个字符,仅可使用中文、字母、数字、中划线(-)和下划线(_)。
单击创建。
当集群状态显示为运行中时,表示集群创建成功。
步骤三:提交作业
集群创建成功后,您可以提交作业。本文以通过CRD方式提交Spark作业为例介绍。关于Spark的更多介绍,可以参见开源文档Quick Start,选择适合您的语言和版本。
提交作业的详细信息请参见:
通过kubectl连接Kubernetes集群,详情请参见获取集群KubeConfig并通过kubectl工具连接集群。
新建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的配置。
执行如下命令,提交作业。
kubectl apply -f spark-pi.yaml --namespace <集群对应的namespace>
本文示例代码中的
<集群对应的namespace>
,需要替换为集群的命名空间,您可以登录E-MapReduce on ACK控制台,在集群详情页面查看。返回如下信息。
sparkapplication.sparkoperator.k8s.io/spark-pi-simple created
说明spark-pi-simple
为本示例提交任务后的作业名。可选:您可以在作业详情页面查看已创建的作业信息。
(可选)步骤四:释放集群
如果您创建的集群不再使用时,可以释放集群节约成本。
在EMR on ACK页面,单击目标集群操作列的释放。
在释放集群对话框中,单击确定。