DataWorks支持基于EMR(E-MapReduce)集群创建Hive、MR、Presto和Spark SQL等节点,实现EMR任务工作流的配置、周期性调度和元数据管理等功能,保障数据生产及管理的高效稳定。本文为您介绍如何在DataWorks注册同账号或跨账号的EMR集群。
背景信息
开源大数据开发平台E-MapReduce(简称EMR),是运行在阿里云平台上的一种大数据处理的系统解决方案。
EMR基于开源的Apache Hadoop和Apache Spark,让您可以方便地使用Hadoop和Spark生态系统中的其他周边系统分析和处理数据。EMR还可以与阿里云其他的云数据存储系统和数据库系统(例如,阿里云OSS和RDS等)进行数据传输。阿里云EMR提供了on ECS、on ACK和Serverless等形态,以满足不同用户的需求。
在DataWorks运行EMR任务时可选择多种EMR组件,不同组件运行任务时的最优配置存在差异,您在配置EMR集群时请参考EMR集群配置建议,根据实际情况进行选择。
支持的集群类型
您需将EMR集群注册至DataWorks,后续才可在DataWorks上使用该集群运行相关任务。在DataWorks执行相关操作前,请提前创建好相应集群。DataWorks目前支持注册的集群类型如下:
若您使用的集群类型无法注册至DataWorks,请提交工单联系技术支持人员处理。
使用限制
任务类型:DataWorks暂不支持执行EMR的Flink任务。
任务执行:DataWorks支持使用Serverless资源组(推荐)或旧版独享调度资源组进行EMR任务执行。
任务治理:
仅EMR Hive、EMR Spark及EMR Spark SQL节点中SQL任务支持产出血缘关系。当集群版本为5.9.1或3.43.1及以上版本时,以上节点均支持查看表级血缘与字段级血缘。
说明对于Spark类型节点,当EMR集群版本为5.8.0和3.42.0及以上版本时,支持查看表级血缘与字段级血缘,当EMR集群版本低于5.8.0和3.42.0版本时,仅Spark 2.x支持查看表级血缘。
DataLake或自定义集群若要在DataWorks管理元数据,需先在集群侧配置EMR-HOOK。若未配置,则在DataWorks中无法实时展示元数据、生成审计日志、展示血缘关系,EMR相关治理任务将无法开展。目前仅EMR Hive、EMR Spark SQL服务支持配置EMR-HOOK,配置详情请参见配置Hive的EMR-HOOK、配置Spark SQL的EMR-HOOK。
地域限制:目前仅华北3(张家口)地域支持使用EMR Serverless Spark。
开启Kerberos认证的EMR集群的安全组需要对资源组绑定的交换机网段放开UDP协议端口的入权限。
说明您需单击EMR集群基础信息中集群安全组的图标,进入安全组详情页签,单击访问规则的入方向,选择手动添加,协议类型选择自定义UDP,端口范围配置详情请查看EMR集群中的
/etc/krb5.conf
文件中对应的kdc端口,授权对象设置为资源组绑定的交换机网段。
前提条件
注意事项
若要实现DataWorks标准模式工作空间的开发环境与生产环境隔离机制,您需要为开发环境和生产环境注册两个不同的EMR集群。且这两个集群的元数据需要使用如下存储方式:
一个EMR集群可以注册在同一个阿里云账号的多个工作空间,但无法跨账号注册至多个工作空间。例如,某集群已注册至当前阿里云账号的工作空间,则该集群将无法跨账号再次被注册至其他阿里云账号的工作空间。
步骤一:进入EMR集群页面
进入管理中心页面。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入管理中心。
单击左侧导航栏的集群管理,进入集群管理页面 ,单击注册集群按钮,选择注册集群类型为E-MapReduce。进入注册E-MapReduce集群页面。
步骤二:注册EMR集群
在注册E-MapReduce集群页面配置集群信息。
标准模式工作空间,需分别填写开发环境和生产环境的集群信息,工作空间模式详情请参见必读:简单模式和标准模式的区别。
集群显示名称:定义集群在DataWorks的名称,名称必须唯一。
集群所属云账号:选择需要将哪个账号下的EMR集群注册至当前工作空间。
当前阿里云主账号:将当前阿里云主账号下的EMR集群注册至当前账号的DataWorks工作空间。
其他阿里云主账号:将其他阿里云主账号下的EMR集群注册至当前账号的DataWorks工作空间。
说明EMR Serverless Spark集群不支持跨账号注册,即您无法将其他阿里云账号的EMR Serverless Spark集群注册至当前阿里云账号的工作空间。
请根据选择的账号类型,参照下文配置相关参数。
集群所属云账号:当前账号
当集群所属云账号选择当前阿里云主账号时,您还需要配置如下参数:
配置项 | 说明 |
集群类型 | 选择需要注册的EMR集群类型。目前DataWorks可注册的集群类型请参见使用限制。 |
集群 | 选择当前账号下需要注册至DataWorks的EMR集群。 说明 若集群类型选择EMR Serverless Spark,您需按照界面指引及参考说明选择相应的E-MapReduce工作空间(即要注册的集群)、默认引擎版本、默认资源队列等信息。 |
默认访问身份 | 定义在当前工作空间下,使用什么身份访问该EMR集群。
说明 当默认访问身份选择任务责任人、阿里云主账号或阿里云子账号所映射的集群账号时,您可以参考设置集群身份映射手动配置DataWorks租户成员与EMR集群指定账号的映射关系。通过该映射的集群账号在DataWorks执行EMR任务,未配置DataWorks租户成员与集群账号映射的情况下,DataWorks处理策略如下:
|
传递Proxy User信息 | 用于配置是否传递Proxy User信息。 说明 当开启LDAP/Kerberos等认证方式时,集群会为每个普通用户都颁发一个认证凭证,该操作比较麻烦。为方便统一管理用户权限,您可通过某个超级用户(Real User)去代理普通用户(Proxy User)进行权限认证,此时,通过Proxy User访问集群时,实际使用的是超级用户的身份认证信息。您只需添加用户为Proxy User即可。
不同类型的EMR任务,传递Proxy User信息的方式如下:
|
配置文件 | 当集群类型选择HADOOP时,您可以前往EMR控制台获取配置文件。详情请参见导出和导入服务配置。导出后请根据产品界面要上传的配置文件,修改文件名称。 此外,您还可以登录EMR集群,通过以下路径获取相关配置文件。
|
集群所属云账号:其他阿里云主账号
当集群所属云账号选择其他阿里云主账号时,您还需要配置如下参数:
配置项 | 说明 |
对方阿里云主账号UID | 需添加的EMR集群所属的云账号UID。 |
对方RAM角色 | 访问该EMR集群的RAM角色。该角色需满足如下条件:
说明 跨账号注册EMR集群的相关操作,详情请参见场景:注册跨账号的EMR集群。 |
对方EMR集群类型 | 选择需要注册的EMR集群类型。目前跨账号注册EMR集群场景下仅支持 |
对方EMR集群 | 选择该账号下需要注册至DataWorks的EMR集群。 |
配置文件 | 请在产品界面按照提示配置各项配置文件。获取配置文件详情请参见导出和导入服务配置。导出后请根据产品界面要上传的配置文件,修改文件名称。 此外,您还可以登录EMR集群,通过以下路径获取相关配置文件。
|
默认访问身份 | 定义在当前工作空间下,用什么身份访问该EMR集群。
说明 当默认访问身份选择任务责任人、阿里云主账号或阿里云子账号所映射的集群账号时,您可以参考设置集群身份映射手动配置DataWorks租户成员与EMR集群指定账号的映射关系。通过该映射的集群账号在DataWorks执行EMR任务,未配置DataWorks租户成员与集群账号映射的情况下,DataWorks处理策略如下:
|
传递Proxy User信息 | 用于配置是否传递Proxy User信息。 说明 当开启LDAP/Kerberos等认证方式时,集群会为每个普通用户都颁发一个认证凭证,该操作比较麻烦。为方便统一管理用户权限,您可通过某个超级用户(Real User)去代理普通用户(Proxy User)进行权限认证,此时,通过Proxy User访问集群时,实际使用的是超级用户的身份认证信息。您只需添加用户为Proxy User即可。
不同类型的EMR任务,传递Proxy User信息的方式如下:
|
步骤三:资源组初始化
初次注册集群、集群服务配置变更或组件版本升级(例如:修改core-site.xml)请初始化资源组,确保资源组可正常访问EMR,资源组当前环境配置可正常执行EMR任务。
在开源集群页面,找到已注册的EMR集群页签,单击右上角的资源组初始化。
在需要的资源组后面单击初始化。
完成后单击确认。
DataWorks支持使用Serverless资源组(推荐)或旧版独享调度资源组运行EMR任务,所以此处支持选择Serverless资源组或旧版独享调度资源组进行资源组初始化操作。
资源组初始化可能导致正在运行的任务失败。非必要场景(例如,集群配置变更,需要立即重新初始化资源组,否则会导致大量任务运行失败),建议在业务低峰期对资源组执行初始化操作。
后续步骤
数据开发:您可参考通用开发流程配置相关组件环境。
设置集群身份映射:当EMR集群默认访问身份非hadoop账号时,您需要配置集群身份映射,控制操作DataWorks的RAM用户在DataWorks仅可访问其有权限的资源,实现权限管控。
设置全局YARN资源队列:您可通过YARN资源队列映射,指定各模块使用的YARN队列,并支持设置是否覆盖各模块的配置。
设置全局Spark参数:您可参考Spark官方文档自定义全局Spark参数,并支持设置当存在同名参数时,空间级Spark参数配置是否覆盖各模块的配置。
设置Kyuubi连接信息:若您需使用自定义的账号及密码登录Kyuubi来运行相关任务,可参考该文档自定义Kyuubi的连接信息。