注册EMR集群至DataWorks

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暂不支持执行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。

前提条件

  • 已开通如下权限。

    仅拥有以下身份的RAM用户或RAM角色,可注册EMR集群,操作详情请参见为RAM用户授权

    • 阿里云主账号。

    • 同时具有DataWorks空间管理员角色AliyunEMRFullAccess策略的RAM子账号或RAM角色。

    • 同时具有AliyunDataWorksFullAccessAliyunEMRFullAccess策略的RAM子账号或RAM角色。

  • 已购买对应类型EMR集群。

    DataWorks支持注册的集群类型,详情请参见使用限制

注意事项

  • 若要实现DataWorks标准模式工作空间的开发环境与生产环境隔离机制,您需要为开发环境和生产环境注册两个不同的EMR集群。且这两个集群的元数据需要使用如下存储方式:

    • 方式一(数据湖方案推荐):存储在数据湖构建DLF(Data Lake Formation)的两个不同数据目录Catalog。详情请参见DLF统一元数据

    • 方式二:存储在阿里云关系型数据库RDS(Relational Database Service)的两个不同数据库Database。详情请参见配置自建RDS

  • 一个EMR集群可以注册在同一个阿里云账号的多个工作空间,但无法跨账号注册至多个工作空间。例如,某集群已注册至当前阿里云账号的工作空间,则该集群将无法跨账号再次被注册至其他阿里云账号的工作空间。

步骤一:进入EMR集群页面

  1. 进入管理中心页面。

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

  2. 单击左侧导航栏的集群管理,进入集群管理页面 ,单击注册集群按钮,选择注册集群类型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集群。

  • 开发环境:可选择使用集群账号hadoop,或任务执行者所映射的集群账号。

  • 生产环境:可选择使用集群账号hadoop,任务责任人、阿里云主账号或阿里云子账号所映射的集群账号。

说明

当默认访问身份选择任务责任人、阿里云主账号或阿里云子账号所映射的集群账号时,您可以参考设置集群身份映射手动配置DataWorks租户成员与EMR集群指定账号的映射关系。通过该映射的集群账号在DataWorks执行EMR任务,未配置DataWorks租户成员与集群账号映射的情况下,DataWorks处理策略如下:

  • 若使用RAM用户(子账号)执行任务:我们将默认按照与当前操作人同名的EMR集群系统账号执行任务。若集群开启LDAP或者Kerberos认证,任务执行将失败。

  • 若使用阿里云主账号执行任务:DataWorks任务执行将报错。

传递Proxy User信息

用于配置是否传递Proxy User信息。

说明

当开启LDAP/Kerberos等认证方式时,集群会为每个普通用户都颁发一个认证凭证,该操作比较麻烦。为方便统一管理用户权限,您可通过某个超级用户(Real User)去代理普通用户(Proxy User)进行权限认证,此时,通过Proxy User访问集群时,实际使用的是超级用户的身份认证信息。您只需添加用户为Proxy User即可。

  • 传递:在EMR集群中运行任务时,根据Proxy User进行数据访问权限的校验及控制。

    • DataStudio(数据开发)、数据分析:将动态传递任务执行者的阿里云账号名称,即Proxy User信息为任务执行者的信息。

    • 运维中心:将固定传递注册集群时配置的默认访问身份的阿里云账号名称,即Proxy User信息为默认访问身份的信息。

  • 不传递:在EMR集群中运行任务时,根据注册集群时配置的账号认证方式进行数据访问权限的校验及控制。

不同类型的EMR任务,传递Proxy User信息的方式如下:

  • EMR Kyuubi任务:通过hive.server2.proxy.user配置项传递。

  • EMR Spark任务及非JDBC模式的EMR Spark SQL任务:通过-proxy-user配置项传递。

配置文件

当集群类型选择HADOOP时,您可以前往EMR控制台获取配置文件。详情请参见导出和导入服务配置。导出后请根据产品界面要上传的配置文件,修改文件名称。

image.png

此外,您还可以登录EMR集群,通过以下路径获取相关配置文件。

/etc/ecm/hadoop-conf/core-site.xml
/etc/ecm/hadoop-conf/hdfs-site.xml
/etc/ecm/hadoop-conf/mapred-site.xml
/etc/ecm/hadoop-conf/yarn-site.xml
/etc/ecm/hive-conf/hive-site.xml
/etc/ecm/spark-conf/spark-defaults.conf
/etc/ecm/spark-conf/spark-env.sh

集群所属云账号:其他阿里云主账号

当集群所属云账号选择其他阿里云主账号时,您还需要配置如下参数:

配置项

说明

对方阿里云主账号UID

需添加的EMR集群所属的云账号UID。

对方RAM角色

访问该EMR集群的RAM角色。该角色需满足如下条件:

  • 对方阿里云主账号中已创建RAM角色。

  • 对方阿里云主账号的RAM角色已授权访问当前账号的DataWorks服务。

说明

跨账号注册EMR集群的相关操作,详情请参见场景:注册跨账号的EMR集群

对方EMR集群类型

选择需要注册的EMR集群类型。目前跨账号注册EMR集群场景下仅支持EMR on ECS:DataLake集群EMR on ECS:Hadoop集群EMR on ECS:自定义集群

对方EMR集群

选择该账号下需要注册至DataWorks的EMR集群。

配置文件

请在产品界面按照提示配置各项配置文件。获取配置文件详情请参见导出和导入服务配置。导出后请根据产品界面要上传的配置文件,修改文件名称。

image.png

此外,您还可以登录EMR集群,通过以下路径获取相关配置文件。

/etc/ecm/hadoop-conf/core-site.xml
/etc/ecm/hadoop-conf/hdfs-site.xml
/etc/ecm/hadoop-conf/mapred-site.xml
/etc/ecm/hadoop-conf/yarn-site.xml
/etc/ecm/hive-conf/hive-site.xml
/etc/ecm/spark-conf/spark-defaults.conf
/etc/ecm/spark-conf/spark-env.sh

默认访问身份

定义在当前工作空间下,用什么身份访问该EMR集群。

  • 开发环境:可选择统一使用集群账号:hadoop,或任务责任人所映射的集群账号。

  • 生产环境:可选择统一使用集群账号:hadoop、任务责任人、阿里云主账号或阿里云子账号所映射的集群账号。

说明

当默认访问身份选择任务责任人、阿里云主账号或阿里云子账号所映射的集群账号时,您可以参考设置集群身份映射手动配置DataWorks租户成员与EMR集群指定账号的映射关系。通过该映射的集群账号在DataWorks执行EMR任务,未配置DataWorks租户成员与集群账号映射的情况下,DataWorks处理策略如下:

  • 若使用RAM用户(子账号)执行任务:我们将默认按照与当前操作人同名的EMR集群系统账号执行任务。若集群开启LDAP或者Kerberos认证,任务执行将失败。

  • 若使用阿里云主账号执行任务:DataWorks任务执行将报错。

传递Proxy User信息

用于配置是否传递Proxy User信息。

说明

当开启LDAP/Kerberos等认证方式时,集群会为每个普通用户都颁发一个认证凭证,该操作比较麻烦。为方便统一管理用户权限,您可通过某个超级用户(Real User)去代理普通用户(Proxy User)进行权限认证,此时,通过Proxy User访问集群时,实际使用的是超级用户的身份认证信息。您只需添加用户为Proxy User即可。

  • 传递:在EMR集群中运行任务时,根据Proxy User进行数据访问权限的校验及控制。

    • DataStudio(数据开发)、数据分析:将动态传递任务执行者的阿里云账号名称,即Proxy User信息为任务执行者的信息。

    • 运维中心:将固定传递注册集群时配置的默认访问身份的阿里云账号名称,即Proxy User信息为默认访问身份的信息。

  • 不传递:在EMR集群中运行任务时,根据注册集群时配置的账号认证方式进行数据访问权限的校验及控制。

不同类型的EMR任务,传递Proxy User信息的方式如下:

  • EMR Kyuubi任务:通过hive.server2.proxy.user配置项传递。

  • EMR Spark任务及非JDBC模式的EMR Spark SQL任务:通过-proxy-user配置项传递。

步骤三:资源组初始化

初次注册集群、集群服务配置变更组件版本升级(例如:修改core-site.xml)请初始化资源组,确保资源组可正常访问EMR,资源组当前环境配置可正常执行EMR任务。

  1. 开源集群页面,找到已注册的EMR集群页签,单击右上角的资源组初始化

  2. 在需要的资源组后面单击初始化

  3. 完成后单击确认

说明
  • DataWorks支持使用Serverless资源组(推荐)或旧版独享调度资源组运行EMR任务,所以此处支持选择Serverless资源组或旧版独享调度资源组进行资源组初始化操作。

  • 资源组初始化可能导致正在运行的任务失败。非必要场景(例如,集群配置变更,需要立即重新初始化资源组,否则会导致大量任务运行失败),建议在业务低峰期对资源组执行初始化操作。

后续步骤

  • 数据开发:您可参考通用开发流程配置相关组件环境。

  • 设置集群身份映射:当EMR集群默认访问身份非hadoop账号时,您需要配置集群身份映射,控制操作DataWorks的RAM用户在DataWorks仅可访问其有权限的资源,实现权限管控。

  • 设置全局YARN资源队列:您可通过YARN资源队列映射,指定各模块使用的YARN队列,并支持设置是否覆盖各模块的配置。

  • 设置全局Spark参数:您可参考Spark官方文档自定义全局Spark参数,并支持设置当存在同名参数时,空间级Spark参数配置是否覆盖各模块的配置。

  • 设置Kyuubi连接信息:若您需使用自定义的账号及密码登录Kyuubi来运行相关任务,可参考该文档自定义Kyuubi的连接信息。