创建EMR Spark Streaming节点

EMR Spark Streaming节点用于处理高吞吐量的实时流数据,并具备容错机制,可以帮助您快速恢复出错的数据流。本文为您介绍如何创建EMR Spark Streaming节点并进行数据开发。

前提条件

  • 已创建阿里云EMR集群,并注册EMR集群至DataWorks。操作详情请参见注册EMR集群至DataWorks

  • (可选,RAM账号需要)进行任务开发的RAM账号已被添加至对应工作空间中,并具有开发空间管理员(权限较大,谨慎添加)角色权限,添加成员的操作详情请参见为工作空间添加空间成员

  • 已购买Serverless资源组并完成资源组配置,包括绑定工作空间、网络配置等,详情请参见新增和使用Serverless资源组

  • 数据开发(DataStudio)中已创建业务流程。

    数据开发(DataStudio)基于业务流程对不同开发引擎进行具体开发操作,所以您创建节点前需要先新建业务流程,操作详情请参见创建业务流程

使用限制

  • 仅支持使用Serverless资源组(推荐)或独享调度资源组运行该类型任务。

  • 不支持EMR on ACK 类型的Spark集群创建使用EMR Spark Streaming节点进行任务开发。

步骤一:创建EMR Spark Streaming节点

  1. 进入数据开发页面。

    登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的数据开发与治理 > 数据开发,在下拉框中选择对应工作空间后单击进入数据开发

  2. 新建EMR Spark Streaming节点。

    1. 右键单击目标业务流程,选择新建节点 > EMR > EMR Spark Streaming

      说明

      您也可以鼠标悬停至新建,选择新建节点 > EMR > EMR Spark Streaming

    2. 新建节点对话框中,输入名称,并选择引擎实例节点类型路径。单击确认,进入EMR Spark Streaming节点编辑页面。

      说明

      节点名称支持大小写字母、中文、数字、下划线(_)和小数点(.)。

步骤二:开发EMR Spark Streaming任务

在EMR Spark Streaming节点编辑页面双击已创建的节点,进入任务开发页面,执行如下开发操作。

创建并引用EMR JAR资源

如果您使用的是DataLake(新版数据湖)集群,则可通过如下步骤引用EMR JAR资源。

  1. 准备EMR JAR示例代码。

    spark-submit --master yarn
    --deploy-mode cluster
    --name SparkPi
    --driver-memory 4G
    --driver-cores 1
    --num-executors 5
    --executor-memory 4G
    --executor-cores 1
    --class org.apache.spark.examples.JavaSparkPi
    hdfs:///tmp/jars/spark-examples_2.11-2.4.8.jar 100
    说明

    若EMR Spark Streaming节点依赖的资源较大,则无法通过DataWorks页面上传。您可将资源存放至HDFS上,然后在代码中进行引用。代码示例如下。

  2. 创建EMR JAR资源,详情请参见创建和使用EMR资源。首次使用需要进行一键授权

  3. 引用EMR JAR资源。

    1. 打开创建的EMR Spark Streaming节点,停留在代码编辑页面。

    2. EMR > 资源节点下,找到待引用资源,右键选择引用资源

    3. 选择资源后,当节点编辑页面显示##@resource_reference{""}格式的语句,表明资源引用成功。此时,需要执行下述命令。命令涉及的资源包、Bucket名称、路径信息等为本文示例的内容,使用时,请替换为实际使用的信息。

      ##@resource_reference{"examples-1.2.0-shaded.jar"}
      --master yarn-cluster --executor-cores 2 --executor-memory 2g --driver-memory 1g --num-executors 2 --class com.aliyun.emr.example.spark.streaming.JavaLoghubWordCount examples-1.2.0-shaded.jar <logService-project> <logService-store> <group> <endpoint> <access-key-id> <access-key-secret>

开发SQL代码

在EMR Spark Streaming节点的编辑页面,输入需要执行的作业代码。示例如下。

spark-submit --master yarn-cluster --executor-cores 2 --executor-memory 2g --driver-memory 1g --num-executors 2 --class com.aliyun.emr.example.spark.streaming.JavaLoghubWordCount examples-1.2.0-shaded.jar <logService-project> <logService-store> <group> <endpoint> <access-key-id> <access-key-secret>
说明
  • 示例在DataWorks上传的资源为examples-1.2.0-shaded.jar

  • access-key-idaccess-key-secret需要替换为您所使用的阿里云账号的AccessKey ID及AccessKey Secret。您可以登录DataWorks控制台,鼠标悬停至顶部菜单栏右侧的用户头像,进入AccessKey管理,获取AccessKey ID及AccessKey Secret。

  • EMR Spark Streaming节点编辑代码时不支持注释语句。

  • 如果您工作空间的数据开发中绑定多个EMR数据源,则需要根据业务需求选择合适的引擎。如果仅绑定一个EMR引擎,则无需选择。

(可选)配置高级参数

您可在节点高级设置处配置特有属性参数。更多属性参数设置,请参考Spark Configuration。集群可配置的高级参数具体如下表。

DataLake集群:EMR on ECS

高级参数

配置说明

queue

提交作业的调度队列,默认为default队列。关于EMR YARN说明,详情请参见队列基础配置

priority

优先级,默认为1。

其他

您也可以直接在高级配置里追加自定义SparkConf参数。提交代码时DataWorks会自行在命令中加上新增的参数。例如,"spark.driver.memory" : "2g"

执行SQL任务

  1. 在工具栏单击高级运行图标,在参数对话框选择已创建的调度资源组,单击运行

    说明
    • 访问公共网络或VPC网络环境的数据源需要使用与数据源测试连通性成功的调度资源组。详情请参见网络连通方案

    • 如果您后续执行任务需要修改使用的资源组,您可单击带参运行高级运行图标,选择需要更换的调度资源组。

  2. 单击保存图标,保存编写的SQL语句。

  3. (可选)冒烟测试。

    如果您希望在开发环境进行冒烟测试,可在执行节点提交或节点提交后执行冒烟测试,操作详情请参见执行冒烟测试

步骤三:配置节点调度

如您需要周期性执行创建的节点任务,可单击节点编辑页面右侧的调度配置,根据业务需求配置该节点任务的调度信息。配置详情请参见任务调度属性配置概述

说明

您需要设置节点的重跑属性依赖的上游节点,才可以提交节点。

步骤四:发布节点任务

节点任务配置完成后,需执行提交发布操作,提交发布后节点即会根据调度配置内容进行周期性运行。

  1. 单击工具栏中的保存图标,保存节点。

  2. 单击工具栏中的提交图标,提交节点任务。

    提交时需在提交对话框中输入变更描述,并根据需要选择是否在节点提交后执行代码评审。

    说明
    • 您需设置节点的重跑属性依赖的上游节点,才可提交节点。

    • 代码评审可对任务的代码质量进行把控,防止由于任务代码有误,未经审核直接发布上线后出现任务报错。如进行代码评审,则提交的节点代码必须通过评审人员的审核才可发布,详情请参见代码评审

如您使用的是标准模式的工作空间,任务提交成功后,需单击节点编辑页面右上方的发布,将该任务发布至生产环境执行,操作请参见发布任务

后续步骤

任务提交发布后,会基于节点的配置周期性运行,您可单击节点编辑界面右上角的运维,进入运维中心查看周期任务的调度运行情况。详情请参见查看并管理周期任务