Gateway主要用于向计算集群提交任务和进行安全隔离。为了方便部署Gateway环境,E-MapReduce提供了名为EMR-CLI的工具,它基于阿里云ECS来创建实例并部署Gateway环境。当您创建了DataLake、DataFlow或OLAP类型的集群时,可以使用本文档来部署Gateway环境。
Gateway的三种部署形态与选型指南
Gateway 是 EMR 提供的作业提交隔离层,其核心价值在于:
解耦客户端负载与集群核心服务
将
spark-submit、hive -f、yarn application等客户端操作从 Master/Resource Manager 节点剥离。实现多租户环境隔离
支持为不同用户/部门配置独立的运行时环境。
提升集群稳定性与可维护性
避免因高频提交、调试脚本、环境冲突或资源争抢影响 YARN ResourceManager、HDFS NameNode 等关键服务。
EMR 当前提供三种 Gateway 形态,适用于不同集群类型、版本及架构需求。
形态 | 支持的关联集群类型与版本要求 | 部署方式与关键特性 | 适用场景与选型建议 |
Gateway 节点组 | 仅支持以下集群:
| • 直接在现有集群内新增节点组,详情请参见管理节点组。 | 优先推荐:适用于需快速为已有 DataLake/DataFlow 集群扩展安全、隔离的提交入口,运维成本最低,配置一致性高。 |
Gateway 环境 | 支持DataLake、DataFlow、Custom、OLAP集群 | • 基于ECS 实例手动部署,详情请参见使用EMR-CLI自定义部署Gateway环境。 | 当集群不支持 Gateway 节点组时的标准化替代方案。 |
Gateway 集群 | 仅支持Hadoop、Kafka集群 |
| 适用于Hadoop、Kafka集群。 |
前提条件
已经在E-MapReduce中创建了业务场景为数据湖(DataLake)、实时数据流(DataFlow)、数据分析(OLAP)或自定义(Custom)场景的计算集群,且计算集群状态为运行中。创建集群详情请参见创建集群。
使用限制
集群类型:本文方案仅适用于为数据湖(DataLake)、实时数据流集群(DataFlow)和数据分析集群(OLAP)或自定义(Custom)集群的Gateway环境部署。在集群类型与集群版本兼容的情况下,推荐使用Gateway 节点组。
对于已存在的Hadoop集群和Kafka集群的Gateway环境部署,详情请参见创建Gateway集群。
说明只有在2022年12月19日17点(UTC+8)之前创建过Hadoop或Kafka集群的账号,之后才允许继续创建这两种类型的集群。若账号在2022年12月19日17点(UTC+8)之前未曾创建过这两种集群,之后也无法进行创建。
覆盖式安装:EMR-CLI在部署Gateway客户端时采用覆盖安装模式。如果您已在ECS中部署了Gateway,则重新部署时会覆盖旧的客户端,并在同一目录下安装新的客户端。
独立部署:请勿使用EMR集群中已有的ECS实例(例如Master、Core或Task节点)作为Gateway机器,以免客户端环境干扰集群服务的正常运行。
支持的服务:目前支持通过此方式部署的服务客户端包括:HDFS、YARN、HBase、HIVE、SPARK2、SPARK3、JINDOSDK、FLINK、SQOOP、IMPALA、PRESTO、HUDI、ICEBERG、TEZ和DELTALAKE。
首次部署Gateway环境
在ECS控制台创建实例,详情请参见自定义购买实例。
说明创建的ECS实例可以不具备公网访问能力。
相关参数推荐如下。
参数
说明
地域及可用区
必须与EMR集群所在地域和可用区一致。
镜像
必须与EMR实例的系统匹配。
系统盘
推荐使用ESSD云盘,不小于60 GiB。
网络
必须与EMR集群VPC一致。
安全组
必须与EMR集群的Master实例组安全组一致,保证ECS实例与EMR集群的网络互通。
构建EMR Gateway专用的ECS RAM角色。
使用RAM管理员登录RAM控制台。
在左侧导航栏,选择。
在角色页面,单击创建角色。
在创建角色面板中,选择信任实体类型为云服务,信任主体名称为云服务器ECS,单击确定。
填写角色名称(例如ECSForEMRGatewayRole),然后单击确定。
为RAM角色授权。
在权限管理页签,单击新增授权。
在新增授权面板中,选择系统策略中的AliyunEMRFullAccess、AliyunOSSFullAccess和AliyunDLFFullAccess,单击确认新增授权。

单击关闭。
授予ECS实例RAM角色。
登录ECS管理控制台。
在左侧导航栏,选择。
在顶部菜单栏左上角处,选择地域。
找到新建的ECS实例,选择。
在弹窗中,选择ECSForEMRGatewayRole角色,单击确定。
连接ECS实例,详情请参见连接ECS实例。
执行以下命令,安装EMR-CLI。
regionId=`curl http://100.100.100.200/latest/meta-data/region-id`; curl https://ecm-repo-${regionId}.oss-${regionId}-internal.aliyuncs.com/emrcli/emrcli.sh -o /tmp/emrcli.sh; chmod 755 /tmp/emrcli.sh; sh /tmp/emrcli.sh install ${regionId}安装成功会返回以下信息。
install emrcli success执行以下命令,部署EMR Gateway客户端。
emrcli gateway deploy \ --clusterId <ClusterId> \ --appNames <ApplicationName>您需要根据实际情况修改以下参数。
参数
是否必选
描述
clusterId
是
在EMR上已创建集群的集群ID。
appNames
否
应用名称。有多个应用时,使用英文逗号(,)隔开,例如,
HDFS,YARN。未指定该参数时,默认为集群所有支持的客户端应用,例如Hive和HDFS。
部署成功会返回以下信息。
deployGateway success重要Gateway安装后,系统环境变量中的
JAVA_HOME会调整为/usr/lib/jvm/java-1.8.0。您可以在/etc/profile.d/emr_env.sh文件中修改,但修改后可能影响Gateway功能,因此请谨慎操作。重新登录ECS实例,使得系统环境变量生效。
可选:配置Gateway节点的域名解析。
重要Gateway包含Spark服务时须执行该步骤。
管理Gateway环境
Gateway创建完成后,如果Gateway关联的计算集群进行了服务的新增或服务配置的更改,您可以通过以下命令更新客户端组件或同步最新配置。
更新客户端组件
当EMR集群中新增了服务(例如新安装了Flink),您可以在Gateway节点上增量安装对应的客户端。deploy命令会覆盖已安装应用的配置,并增量安装新应用。
# 示例:在已有HDFS,YARN的基础上,新增FLINK客户端
emrcli gateway deploy \
--clusterId <ClusterId> \
--appNames HDFS,YARN,FLINK更新成功后返回以下信息。
deployGateway success同步EMR集群修改后的配置
如果EMR集群中服务的配置发生变更(例如通过EMR控制台修改了core-site.xml),您需要手动将新配置同步到Gateway节点。
同步配置时会覆盖Gateway上的配置,因此请谨慎操作。
# 执行同步命令
emrcli gateway refreshConfigs \
--clusterId <ClusterId> \
--appNames <ApplicationName> # 可选,指定需要同步的应用同步成功后返回以下信息。
refreshConfiguration success管理EMR-CLI
查看EMR CLI版本
您可以通过以下命令来查看EMR CLI的版本信息。
emrcli version返回以下类似信息。
2.0.0升级EMR CLI
重新执行首次部署Gateway环境中安装EMR CLI的步骤,会自动升级至最新版本。
常见问题
Q:如何切换计算集群?
A:切换计算集群的步骤如下:
使用
-mv命令手动备份旧集群(切换前集群)中的文件,包括/opt/apps目录、/etc/taihao-apps目录以及/etc/profile.d/yarn.sh文件,以防止数据丢失。重新执行本文中的操作,进行计算集群的重新部署。
> 实例设置 > 授予/收回RAM角色