在项目中,您可以通过创建作业来进行任务开发。目前E-MapReduce数据开发支持的作业类型有:Shell、Hive、Hive SQL、Spark、SparkSQL、Spark Shell、Spark Streaming、MapReduce、Sqoop、Pig 、Flink和Streaming SQL。

前提条件

已创建项目或已被加入到项目中,详情请参见项目管理

新建作业

  1. 通过主账号登录阿里云E-MapReduce控制台
  2. 单击上方的数据开发页签,进入项目列表页面。
  3. 单击待编辑项目所在行的作业编辑,进入作业编辑页面。
  4. 在页面左侧,在需要操作的文件夹上单击右键,选择新建作业
  5. 新建作业对话框中,输入作业名称作业描述,选择作业类型

    创建作业时作业类型一经确定,不能修改。

  6. 单击确定
    说明 您还可以通过在文件夹上单击右键,进行新建子文件夹重命名文件夹删除文件夹操作。

设置作业

各个具体作业类型的开发与设置,请参见作业部分。 以下介绍的是作业的基础设置高级设置告警设置

  1. 单击页面右上角的作业设置
  2. 作业设置页面,设置基础信息。
    参数 描述
    作业概要
    • 失败重试次数:设置在工作流运行到该作业失败时,最大支持重试的次数。
      说明 如果直接在作业页面运行作业,该选项不会生效。
    • 失败策略:设置在工作流运行到该作业失败时,是继续执行下一个工作流节点还是暂停当前工作流。
    • 作业描述:可修改作业的描述。
    运行资源 单击右侧的加号,添加作业执行所依赖的jar包或UDF等资源。您需要将资源先上传至OSS,然后在运行资源中直接添加即可。
    配置参数 指定作业代码中所引用的变量的值。您可以在代码中引用变量,格式为${变量名}

    单击右侧的加号,添加Key和Value。其中,Key为变量名,Value为变量的值。另外,您还可以根据调度启动时间在此配置时间变量,详情请参见作业日期设置

  3. 作业设置页面,单击高级设置
    配置项 说明
    模式
    • 提交节点包括以下两种模式,详情请参见作业编辑中的作业提交模式说明。
      • 在 Worker 节点提交:作业通过Launcher在YARN上分配资源进行提交。
      • 在 Header/Gateway 节点提交:作业在分配的机器上直接运行。
    • 预期最大运行时长:0~10800秒。
    环境变量 添加作业执行的环境变量,也可以在作业脚本中直接export环境变量。
    • 示例一:一个shell类型的任务,内容是echo ${ENV_ABC}。如果此处设置了一个环境变量 ENV_ABC=12345,则echo命令的输出结果为 12345
    • 示例二:一个shell类型的作业,内容是java -jar abc.jar,其中abc.jar的内容是:
      public static void main(String[] args) {System.out.println(System.getEnv("ENV_ABC"));}
      您得到结果是12345。此处环境变量的设置相当于执行了以下脚本:
      export ENV_ABC=12345
      java -jar abc.jar
    调度参数 设置作业运行YARN 队列、内存、虚拟核数、优先级和执行用户等信息。当未设置这些参数时,作业会直接采用Hadoop集群的默认值。
    说明 内存设置用于设置启动器Launcher的内存配额。
  4. 高级设置完成后,单击告警设置,设置作业的告警配置项。
    配置项 说明
    执行失败 设置作业执行失败时,是否通知到用户告警组或钉钉告警组。
    启动超时 设置作业启动失败时,是否通知到用户告警组或钉钉告警组。
    作业执行超时 设置作业执行超时时,是否通知到用户告警组或钉钉告警组。

执行作业

单击右上方的运行,执行作业。

查看日志

作业运行后,您可以在页面下方的运行记录中查看作业实例的运行日志。单击运行记录右侧的详情,即可跳转至运维中心查看作业实例的详细信息,并可以查看提交日志和YARN Container日志。

作业可执行操作

在作业目录栏中,对作业名称上单击右键,可以对该作业进行一些操作。

  • 克隆作业:在相同文件夹下,克隆一个已经存在作业的配置。
  • 重命名作业:重新命名作业名称。
  • 删除作业:只有在作业没有关联工作流,或关联的工作流没有在运行或调度时中,才可以被删除。

作业提交模式说明

spark-submit 进程(在数据开发模块中为启动器 Launcher)是Spark的作业提交命令,用于提交Spark作业,一般占用600MB以上内存。作业配置面板中的内存设置,用于设置Launcher的内存配额。

新版作业提交模式包括以下两种:
  • 在 Header/Gateway节点提交:spark-submit进程运行在Header节点上,不受YARN监控。spark-submit内存消耗大,作业过多会造成Header节点资源紧张,进而会导致整个集群不稳定。
  • 在Worker节点提交: spark-submit进程运行在Worker节点上,占用YARN的一个Container,受YARN监控。此模式可缓解 Header 节点的资源使用。

在E-MapReduce集群中,作业实例消耗内存 = Launcher消耗内存 + 用户作业(Job)消耗内存。对于Spark作业,Job消耗内存又可以进一步细分,即Job消耗内存 = spark-submit(指逻辑模块,非进程)消耗内存+driver端消耗内存+executor端消耗内存。作业配置不同,driver端消耗的物理内存的位置也不同,详细说明如下:

  • 如果Spark使用yarn-client模式,则spark-submit + driver是在同一个进程中。在作业提交中,如果这个进程使用LOCAL模式,则这个进程是 Header节点上的一个进程,不受YARN监控。如果这个进程使用YARN模式,则这个进程是Worker节点上的一个进程,占YARN的一个 Container,受YARN监控。
  • 如果Spark使用yarn-cluster模式,则driver是独立的一个进程,占用YARN的一个Container,与spark-submit不在一个进程中。

综上所述,作业的提交节点决定了spark-submit进程是在Header节点还是 Worker 节点上运行,以及是否受YARN监控。Spark的yarn-client和yarn-cluster模式,决定了driver是否与spark-submit在同一个进程中。

问题反馈

如果您在使用阿里云E-MapReduce过程中有任何疑问,欢迎您扫描下面的二维码加入钉钉群进行反馈。

emr_dingding