DataWorks支持基于EMR(E-MapReduce)计算引擎创建Hive、MR、Presto和Spark SQL等节点,实现EMR任务工作流的配置、定时调度和元数据管理等功能,帮助EMR用户更好地生产数据。本文为您介绍在DataWorks上进行EMR作业等操作的注意事项,建议操作前仔细查看。

使用限制

DataWorks上进行EMR作业和其他操作时,不同EMR的版本或配置情况,会对DataWorks的功能上有不同的限制和影响。

DataWorks功能应用/限制 EMR集群版本/配置要求
DataWorks绑定EMR集群 DataWorks不支持新绑定Hadoop集群,但之前已绑定的Hadoop集群仍可继续使用。建议您在DataWorks绑定DataLake(新版数据湖)进行EMR作业开发。详情请参见DataWorks On EMR开发流程(必读)
使用DataWorks数据地图中元数据表的产出信息、自动推荐功能。 EMR的集群版本限制如下:
  • 3.X版本需大于3.33.0。
  • 4.X版本需大于4.6。
版本过低则不支持。
使用DataWorks的创建和使用EMR资源创建EMR表注册EMR函数功能。 EMR集群没有开启高安全模式(Kerberos或者LDAP),开启了则不支持。
创建使用除Hive节点Spark节点外的其他节点。 EMR集群没有开启高安全模式(Kerberos或者LDAP),开启了则仅支持创建使用Hive节点EMR Spark节点EMR Spark SQL节点EMR Spark Streaming节点,其他类型节点不支持使用。
  • DataWorks暂不支持EMR的Flink任务。
  • 仅DataWorksHive节点支持采集EMR元数据、血缘信息,其他节点不支持。
  • 如果您的EMR集群、或者DataWorks的独享调度资源组是2021年8月1日前购买创建的,需提交工单,申请升级DataWorksOnEMR的agent到最新版本。

使用前的准备

在DataWorks上使用进行EMR任务前,您需要完成以下准备。
  • 购买并配置独享调度资源组。

    运行EMR任务时,请使用独享调度资源组,因此在进行EMR任务前,您需要购买一个独享调度资源组,并与当前EMR集群所在的VPC连通网络。购买并配置独享调度资源组的操作请参见独享调度资源组概述

  • EMR集群配置检查。
    在DataWorks上进行EMR作业前,您需要检查EMR的部分关键配置是否满足要求,否则可能会导致在DataWorks上运行EMR作业时出错,主要需要保障EMR的配置满足以下要求:
    • 您已创建阿里云EMR集群,且集群所在的安全组中入方向的安全策略包含以下策略。
      • 授权策略:允许
      • 协议类型:自定义 TCP
      • 端口范围:8898/8898
      • 授权对象:100.104.0.0/16
    • 如果EMR启用了Ranger,则使用DataWorks进行EMR的作业开发前,您需要在EMR中修改配置,添加白名单配置并重启Hive,否则作业运行时会报错Cannot modify spark.yarn.queue at runtimeCannot modify SKYNET_BIZDATE at runtime
      1. 白名单的配置通过EMR的自定义参数,添加Key和Value进行配置,以Hive组件的配置为例,配置值如下。
        hive.security.authorization.sqlstd.confwhitelist.append=tez.*|spark.*|mapred.*|mapreduce.*|ALISA.*|SKYNET.*
        说明 其中ALISA.*SKYNET.*为DataWorks专有的配置。
      2. 白名单配置完成后需要重启服务,重启后配置才会生效。重启服务的操作详情请参见重启服务
    • 您需要在EMR控制台将集群HDFS配置项中的hadoop.http.authentication.simple.anonymous.allowed参数设置为true,并重启hdfs、yarn组件。
  • 绑定EMR引擎到DataWorks的工作空间。
    您需要绑定EMR引擎到DataWorks工作空间后,才能创建EMR节点和进行EMR作业等操作,绑定EMR引擎时,需根据EMR集群的配置来选择不同的访问模式,以下为操作的注意事项,操作详情请参见准备工作:绑定EMR引擎
    • EMR集群没有开启LDAP时,绑定引擎时,访问模式选择快捷模式。
    • EMR集群开启了LDAP时,绑定引擎时,访问模式选择安全模式。
      此种场景下,需要关注几个配置要点:
      • 在EMR管控台:对应的组件一键开启LDAP后,重启服务。
      • 在绑定的EMR集群对应的项目中,开启安全模式。
      • 在DataWorks绑定的EMR引擎时,访问模式选择安全模式。安全模式
      • (重要)在EMR引擎配置页面,做好各个RAM用户对应的LDAP用户映射关系。
      • (Impala适用)如果Impala开启了LDAP,需要在DataWorks运行作业,还需要做如下操作。
        1. 下载Impala JDBC驱动。

          开启LDAP认证后,JDBC访问Impala需要提供LDAP认证凭据,同时需要前往Cloudera官网下载Impala JDBC驱动并将其添加到至/usr/lib/hive-current/lib/目录下。您可单击Impala JDBC驱动进行下载。

        2. 下载完毕后,需要将下载后的JAR包拷贝到EMR集群的header/gateway节点的目录:/usr/lib/flow-agent-current/zeppelin/interpreter/jdbc/下。
        3. 在EMR控制台重启对应的服务Flow Agent Daemon。

EMR节点及任务调测

完成准备工作后,您即可以创建EMR节点,并在DataWorks上编译运行EMR作业。创建EMR节点及调测任务时,您需关注以下注意事项。
  • 高级参数
    • "USE_GATEWAY":true ,表示任务会被提交到EMR gateway上执行,默认提交到header节点。
    • "SPARK_CONF": "--conf spark.driver.memory=2g --conf xxx=xxx" ,设置spark 任务运行参数,多个参数在该key中追加。
    • “queue”:提交作业的调度队列,默认为default队列。
      说明 与在绑定EMR集群设置的优先级比较,此处设置的队列优先级更高。
    • “vcores”: 虚拟核数,默认为1,不建议修改此默认值。
    • “memory”:内存,默认为2048MB(用于设置启动器Launcher的内存配额),不建议修改此默认值。
    • “priority”:优先级,默认为1。
    • “FLOW_SKIP_SQL_ANALYZE”:SQL语句执行方式,参数值为false表示每次执行一条SQL语句;参数值为true表示每次执行多条SQL语句。
  • 调测运行
    任务代码中,如果有参数变量使用,务必在调度配置 > 参数中增加对应的变量申明,在数据开发使用高级运行来进行任务调测。高级运行

数据地图

使用DataWorks采集EMR元数据时,您需要检查EMR集群的配置是否满足要求,然后进行元数据采集配置。
  1. 在EMR控制台中,检查EMR集群的hive.metastore.pre.event.listenershive.exec.post.hooks配置是生效的。emr数据地图
  2. 在DataWorks的数据地图页面进行元数据采集配置,操作详情请参见收集和查看元数据

常见问题:作业提交失败

  • 问题现象
    在DataWorks上提交EMR作业时失败,报错如下。
    说明 提交作业失败,不是作业运行失败。
    >>> [2021-07-29 07:49:05][INFO   ][InteractiveJobSubmitter]: Fail to submit job: ### ErrorCode: E00007
    
    java.io.IOException: Request Failed, code=500, message=
    
            at com.aliyun.emr.flow.agent.client.protocol.impl.FlowAgentClientRestProtocolImpl.exchange(FlowAgentClientRestProtocolImpl.java:146)
    
           
  • 可能原因

    DataWorks和EMR对接时,需使用EMR集群的FlowAgent组件,如果提交作业失败出现上述报错时,很有可能是FlowAgent这个组件出现了问题,您可以在EMR控制台重启这个组件快速解决问题。

  • 解决方案
    您可以重启FlowAgent组件来解决问题。
    1. 进入FlowAgent页面。

      默认情况下FlowAgent这个组件是隐藏的,您无法直接通过EMR控制台入口进入FlowAgent组件页面。所以您需要先进入任意某个组件的页面,然后手动修改页面链接URL进入FlowAgent页面。

      以进入HDFS组件页面为例,进入后,HDFS组件页面的URL为:https://emr.console.aliyun.com/#/cn-hangzhou/cluster/C-XXXXXXXXXXXXXX/service/HDFS,您需要将链接最后的组件名手动修改为EMRFLOW,即,FlowAgent组件的页面链接为https://emr.console.aliyun.com/#/cn-hangzhou/cluster/C-XXXXXXXXXXXXXX/service/EMRFLOW

    2. 重启FlowAgent组件。

      在右上角单击操作 > 重启All Components,重启组件。