支持您跨阿里云账号注册EMR集群。该操作必须通过RAM角色访问的方式执行。本文为您介绍,如何使用RAM角色访问方式,让阿里云账号A可以在DataWorks中注册阿里云账号B的EMR集群,实现跨账号访问EMR数据。
前提条件
注意事项
仅支持跨账号绑定未使用DLF管理元数据的Hadoop集群。
不支持Kerberos认证。
Spark仅支持SQL任务的表血缘,不支持字段血缘。
账号B侧:创建RAM角色并允许账号A访问
账号B拥有访问云资源EMR的RAM角色,账号B允许账号A来扮演该角色,让账号A能够访问账号B下的云资源EMR。
创建RAM角色。
使用阿里云账号B登录RAM控制台,创建RAM角色并添加账号A为该角色信任的云账号,后续可使用账号A扮演该角色访问相关被授权的资源。创建角色,详情请参见创建可信实体为阿里云账号的RAM角色。
角色关键配置示例如下:
角色名称为:EMRRole。
信任的云账号选择其他账号:此处填写的是账号A的账号ID。您可使用目标账号(账号A)登录控制台,鼠标悬停至顶部菜单栏的用户头像,获取账号ID。
配置完成后,账号A后续即可扮演EMRRole角色,访问相关被授权的资源。
修改角色信任策略。
您需进入EMRRole角色详情页,修改角色信任策略,授权账号A可访问当前账号B的EMR集群。修改角色的信任策略,详情请参见修改RAM角色的信任策略。策略内容如下。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "san******@emr.dataworks.aliyuncs.com" ] } } ], "Version": "1" }
说明san******@emr.dataworks.aliyuncs.com
:需要授权的主账户A的uid。为EMRRole新增AliyunDataWorksAccessingEMRReadOnlyPolicy权限。
账号A侧:注册账号B的集群
在本步骤,您将在账号A的DataWorks空间注册账号B的emr集群。实现集群的跨账号注册。因此,执行本步骤前,您需提前从账号B处获取UID。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入管理中心。
单击左侧导航栏的集群管理,进入集群管理页面 ,单击注册集群按钮,选择注册集群类型为E-MapReduce。进入注册E-MapReduce集群页面。
配置集群信息。
配置基本信息。
根据界面提示,配置如下信息。标准模式工作空间,需分别注册开发环境集群和生产环境集群。工作空间模式,详情请参见必读:简单模式和标准模式的区别。
关键参数配置如下:
对方账号的UID:跨账号注册集群的账号UID。即账号B的UID,需从账号B处获取。
对方RAM角色:允许对方账号访问本账号资源的角色。即本文已创建的角色EMRRole。
对方EMR集群:选择需要注册至DataWorks的EMR集群,此处仅可选择版本为3.38.3或3.38.2且未使用DLF管理元数据的Hadoop集群。
更多注册集群的配置详情,请参见注册EMR集群至DataWorks。
配置资源组初始化。
初次注册集群、集群服务配置变更或组件版本升级(例如:修改core-site.xml)请初始化资源组,确保资源组可正常访问EMR,资源组当前环境配置可正常执行EMR任务。
说明DataWorks支持使用Serverless资源组(推荐)或旧版独享调度资源组运行EMR任务,所以此处支持选择Serverless资源组或旧版独享调度资源组进行资源组初始化操作。
资源组初始化可能导致正在运行的任务失败。非必要场景(例如,集群配置变更,需要立即重新初始化资源组,否则会导致大量任务运行失败),建议在业务低峰期对资源组执行初始化操作。
后续步骤
集群创建后,您可执行如下操作: