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的集群版本限制如下:
|
使用DataWorks的创建和使用EMR资源、创建EMR表和注册EMR函数功能。 | EMR集群没有开启高安全模式(Kerberos或者LDAP),开启了则不支持。 |
创建使用除Hive节点、Spark节点外的其他节点。 | EMR集群没有开启高安全模式(Kerberos或者LDAP),开启了则仅支持创建使用Hive节点、EMR Spark节点、EMR Spark SQL节点、EMR Spark Streaming节点,其他类型节点不支持使用。 |
|
使用前的准备
- 购买并配置独享调度资源组。
运行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 runtime或Cannot modify SKYNET_BIZDATE at runtime。
- 白名单的配置通过EMR的自定义参数,添加Key和Value进行配置,以Hive组件的配置为例,配置值如下。
hive.security.authorization.sqlstd.confwhitelist.append=tez.*|spark.*|mapred.*|mapreduce.*|ALISA.*|SKYNET.*
说明 其中ALISA.*
和SKYNET.*
为DataWorks专有的配置。 - 白名单配置完成后需要重启服务,重启后配置才会生效。重启服务的操作详情请参见重启服务。
- 白名单的配置通过EMR的自定义参数,添加Key和Value进行配置,以Hive组件的配置为例,配置值如下。
- 您需要在EMR控制台将集群HDFS配置项中的hadoop.http.authentication.simple.anonymous.allowed参数设置为true,并重启hdfs、yarn组件。
- 您已创建阿里云EMR集群,且集群所在的安全组中入方向的安全策略包含以下策略。
- 绑定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运行作业,还需要做如下操作。
- 下载Impala JDBC驱动。
开启LDAP认证后,JDBC访问Impala需要提供LDAP认证凭据,同时需要前往Cloudera官网下载Impala JDBC驱动并将其添加到至/usr/lib/hive-current/lib/目录下。您可单击Impala JDBC驱动进行下载。
- 下载完毕后,需要将下载后的JAR包拷贝到EMR集群的header/gateway节点的目录:/usr/lib/flow-agent-current/zeppelin/interpreter/jdbc/下。
- 在EMR控制台重启对应的服务Flow Agent Daemon。
- 下载Impala JDBC驱动。
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语句。
- 调测运行
任务代码中,如果有参数变量使用,务必在高级运行来进行任务调测。中增加对应的变量申明,在数据开发使用
数据地图
- 在EMR控制台中,检查EMR集群的hive.metastore.pre.event.listeners和hive.exec.post.hooks配置是生效的。
- 在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组件来解决问题。
- 进入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
。 - 重启FlowAgent组件。
在右上角单击
,重启组件。
- 进入FlowAgent页面。